Django ForeignKey: почему результат None?
Пытаюсь сделать что-то наподобие JOIN, но только на Django. Для этой цели использую ForeignKey для связи двух моделей. Вот минимально воспроизводимый пример.
models.py
from django.db import models
class Implement(models.Model):
implement_name = models.CharField(max_length=255, blank=True)
class Chatbot(models.Model):
chatbot_name = models.CharField(max_length=255)
implement_name = models.ForeignKey(Implement, on_delete=models.SET_NULL, null=True)
views.py
from django.shortcuts import render
from django.http import HttpResponse
from .models import Chatbot
from .models import Implement
def show_view(request):
shows = Chatbot.objects.select_related('implement_name')
print(f'Всего объектов: {shows.count()}')
for show in shows:
print(f'{show.chatbot_name} - {show.implement_name}')
return HttpResponse("Данные выведены в консоль!")
def add_view(request):
chatbot_name = "My Chatbot Name"
mychatbot = Chatbot(chatbot_name = chatbot_name)
mychatbot.save()
implement_name = "My Implement Name"
myimplement = Implement(implement_name = implement_name)
myimplement.save()
return HttpResponse("Данные добавлены!")
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('add/', views.add_view, name='add'),
path('show/', views.show_view, name='show'),
]
Первым делом вызываю add_view
, добавляя данные в БД. Потом show_view
, но вместо ожидаемого результата My Chatbot Name - My Implement Name
получаю My Chatbot Name - None
, т.е. вместо {show.implement_name}
выводит в консоль None
. Это при том, что данные успешно добавляются. В чем кроется проблема?