#django #django-models
#django #django-модели
Вопрос:
Простите меня, если вопрос не имеет смысла, пытаюсь научить себя django. Я пытался найти, как это сделать, но я не уверен, что использую правильные слова в своем поиске.
У меня есть следующие модели.
class Category(models.Model):
code = models.CharField(max_length=10, unique=True)
description = models.CharField(max_length=50)
class UserGroupHeader(models.Model):
code = models.CharField(max_length=10, unique=True)
description = models.CharField(max_length=50)
class UserGroupDetail(models.Model):
usergroupheader = models.ForeignKey(UserGroupHeader, on_delete=models.CASCADE)
category = models.ForeignKey(Category, on_delete=models.PROTECT)
Как мне получить набор запросов из модели категорий, используя UserGroupHeader? пока что у меня получилось что-то вроде этого UserGroupHeader.objects.get(pk=9).usergroupdetail_set.all()
, теперь из результата этого, как мне получить модель категории?
Ответ №1:
Я не уверен, что я точно понял, что вы пытаетесь сделать, но в целом, во время запроса вы можете отслеживать отношения, используя двойные подчеркивания. Ниже приведена пара возможных запросов:
my_group_header = UserGroupHeader.objects.get(...)
Category.objects.filter(usergroupdetail__usergroupheader=my_group_header) # Gets Category objects related to my_group_header through UserGroupDetail model
Category.objects.filter(usergroupdetail__usergroupheader__code='abc') # Gets Category objects related to UserGroupHeader object with code 'abc' through UserGroupDetail model
UserGroupHeader.objects.filter(usergroupdetail__category__code='abc') # Gets UserGroupHeader objects related to Category object with code 'abc' through UserGroupDetail model
Комментарии:
1. Спасибо, второе — это именно то, что я искал.
Ответ №2:
Ваш запрос UserGroupHeader.objects.get(pk=9).usergroupdetail_set.all()
вернул бы QuerySet
несколько UserGroupDetail
объектов. Чтобы получить category
каждого UserGroupDetail
, вы можете:
for user_group_detail in UserGroupHeader.objects.get(pk=9).usergroupdetail_set.all():
category = user_group_detail.category
print(category. description)
Или что-то подобное в соответствии с вашими потребностями