Объект QuerySet не имеет атрибута ERROR, пытаясь получить связанные данные в полях ManyToMany
У меня есть следующие модели:
class Tag(models.Model):
tag_name = models.CharField(max_length=250)
tagcat = models.ForeignKey('TagCat')
class Subject(models.Model):
user = models.ManyToManyField(User)
tags = models.ManyToManyField(Tag)
class TagCat(models.Model):
cat_name = models.CharField(max_length=100)
Итак, у меня есть тема, у которой есть тег. Я хочу, чтобы цитировать объекты и их соответствующие теги, поэтому я пытаюсь построить правильный вид. До сих пор у меня было:
def home(request):
user1 = Subject.objects.filter(id=1)
print(user1.tags.all())
Я бы ожидал получить теги пользователя через этот оператор печати, но вместо этого получаю ошибку
"Объект QuerySet" не имеет атрибутов "теги"
Как мне получить объекты Subject с соответствующими тегами и передать их в шаблон?
(В идеале все темы. Я сделал это с одним только здесь, чтобы упростить процесс устранения неполадок)
Ответы
Ответ 1
filter
возвращает a QuerySet
(как вы могли догадаться), вместо get
user1 = Subject.objects.get(id=1)
Если Subject
не существует, вы получите исключение Subject.DoesNotExist
. Там также get_object_or_404
ярлык в django.shortcuts
, который полезно, если вы просто захватываете объект, который должен отображаться каким-то образом, и вы хотите вернуть 404, если он недоступен.
Ответ 2
QuerySet.get()
либо вернет одну модель, заданную критериями, пройденными им, либо создаст исключение.