django - “QuerySet”对象没有属性错误,尝试获取 ManyToMany 字段的相关数据

标签 django django-models manytomanyfield

我有以下型号:

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/

相关文章:

javascript - bootstrap.min.js 3.0.0 中缺少 jQuery

python - 模块未找到错误: No module named '*.apps'

django模板继承和上下文

django - 如何在 Django 模型中获取 upload_to 的当前日期

Python/Django 迭代ManyToMany 相关领域

python - Django登录部分

python - Django DB在模型中存储上传的文件是否高效?

Django "through"模型迭代

sql - Django:ManyToManyField,带有附加列

angularjs - Django Rest Framework 与其自身相关的多对多字段