迭代 ManyToMany 字段 Django

jer*_*ord 2 python django django-templates django-models

我在迭代 ManyToMany 字段时遇到一些问题。我想要一个 Post 和 Tag 模型,并让 Post 模型以 ManyToMany 关系的形式扩展 Tag 模型。

以下是我的TagPost模型。

class Tag(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return f"{self.name}"

class Post(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=150)
    content = RichTextField()
    timestamp = models.DateTimeField(auto_now_add=True)
    slug = models.SlugField(unique=True,default="",max_length=1000)
    tag = models.ManyToManyField(Tag,related_name='tags',blank=True)

    # .... other non related functions

Run Code Online (Sandbox Code Playgroud)

但是,当我在 Django shell 中时,尽管对象具有与其关联的标签,但我似乎无法循环这些标签。

例如,我会这样做post1 = Post.objects.all()[0],然后post1.tag.name.all(),但是它会给我一个错误"AttributeError: 'NoneType' object has no attribute 'all'

我尝试过的其他一切都失败了。我可以修复什么来解决这个问题?

先感谢您

nis*_*ant 5

您应该像这样迭代标签对象

for tag in post1.tag.all():
   print(tag.name)
Run Code Online (Sandbox Code Playgroud)