Объект 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() либо вернет одну модель, заданную критериями, пройденными им, либо создаст исключение.