Django - как увидеть результаты объединения по ВСЕМ столбцам, используя .select_related()?
У меня возникают трудности с просмотром поля внешней таблицы из результирующего соединения с помощью select_related(). Есть идеи, в чем моя проблема?
Определите модели
class Magazine(models.Model):
name = models.CharField(max_length=20, unique=True, primary_key=True)
founded = models.CharField(max_length=20, unique=True, primary_key=True)
def __str__(self):
return self.name
class Issue(models.Model):
name = models.ForeignKey(Magazine, on_delete=models.CASCADE, db_column="name")
week = models.CharField(max_length=10, unique=False)
def __str__(self):
return self.week
Регистр
from mainsite.models import Magazine, Issue
admin.site.register(Magazine)
admin.site.register(Issue)
Мигрировать
python ../manage.py makemigrations
python ../manage.py migrate
Загрузка данных
import os
import sys
import django
sys.path.append(os.path.dirname(os.getcwd()))
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mags.settings') #configures the settings for the project. Need to do this before manipulating models
django.setup()
from mainsite.models import Magazine, Issue
magazineNames = ['journal science', 'naughty mag', 'funny cartoons', 'comic fans', 'lawncare', 'NEVERISSUED']
magazineFounded = ['1901', '1995', '2005', '2011', '1993', '1900']
Magazine.objects.bulk_create([Magazine(name=i, founded=j) for i,j in zip(magazineNames, magazineFounded)])
issueNames = ['journal science', 'journal science', 'naughty mag', 'funny cartoons', 'comic fans', 'lawncare', 'lawncare']
issueWeeks = ['1', '2', '3', '4', '5', '6', '7']
Issue.objects.bulk_create([Issue(name=Magazine(name=i), week=j) for i,j in zip(issueNames, issueWeeks)])
#QUERY
Issue.objects.select_related("name").values_list()
<QuerySet [(1, 'journal science', '1'), (2, 'journal science', '2'), (3, 'naughty mag', '3'), (4, 'funny cartoons', '4'), (5, 'comic fans', '5'), (6, 'lawncare', '6'), (7, 'lawncare', '7')]>
Вы указываете столбцы, которые вы хотите включить:
Issue.objects.select_related("name").values_list('week', 'name__name')