我有以下型号:
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)
所以我有一个主题,它有一个标签。我想循环主题及其适当的标签,所以我试图构建正确的 View 。到目前为止,我已经:
def home(request):
user1 = Subject.objects.filter(id=1)
print(user1.tags.all())
我希望通过这个打印语句获取用户的标签,但我得到了错误
'QuerySet' object has no attribute 'tags'
我如何获取带有各自标签的“主题”对象并将它们传递给模板?
(最好是所有主题。我在这里只用了一个主题,以简化故障排除过程)
最佳答案
filter
返回一个 QuerySet
(正如您可能已经猜到的那样),您想要执行 get
相反
user1 = Subject.objects.get(id=1)
如果 Subject
不存在,您将收到 Subject.DoesNotExist
异常。还有get_object_or_404
django.shortcuts
中的快捷方式如果您只是获取要以某种方式显示的对象,并且希望在该对象不可用时返回 404,那么这很有用。
关于django - “QuerySet”对象没有属性错误,尝试获取 ManyToMany 字段的相关数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4319469/