18

我有以下型号:

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' 对象没有属性 'tags'

我将如何获取带有各自标签的“主题”对象并将它们传递给模板?

(理想情况下所有科目。我在这里只做了一个,以简化故障排除过程)

4

2 回答 2

33

filter返回一个(你可能已经猜到了QuerySet),你想做get

user1 = Subject.objects.get(id=1)

如果Subject不存在,您将得到一个Subject.DoesNotExist异常。如果您只是抓取要以某种方式显示的对象并且想要在它不可用时返回 404,那么还有一个get_object_or_404快捷方式很有用。django.shortcuts

于 2010-11-30T22:44:12.813 回答
3

QuerySet.get()将返回由它传递的标准给定的单个模型,或者它将引发异常。

于 2010-11-30T22:45:07.723 回答