1

我有一个帖子模型,我希望类别属性是一组选项。我还希望能够动态更改选项。我目前使用的是多对多关系,因此无论何时发布帖子,都必须选择一个类别,并且我可以通过这种方式编辑每个类别的选择。但我不知道如何访问为帖子选择的类别选项。

例如,我可以发布标题为“苹果”的帖子并选择类别名称“食物”,然后我可以发布标题为“玫瑰”和类别名称“花卉”的帖子。然后我可以在模板上显示每个帖子的标题,但我无法显示或弄清楚如何存储/访问类别名称。

这是我的模型

    class Category(models.Model):
        name = models.CharField(max_length = 50)

    class Post(models.Model):
        title = models.CharField(max_length=50, blank=True)
        category = models.ManyToManyField(Category)

就像现在一样,我可以继续管理并发布带有标题的帖子,然后从该帖子的列表中选择我为该帖子创建的类别。

这是我的视图和模板

    def index(request):
        posts = Post.objects.order_by("-created")
        return render(request,'posts/index.html', {'posts':posts,'categories':categories})


    {% for post in posts %}

            {{ post.title }} | of {{  post.category }}

    {% endfor %}

post.category 不显示类别,而是

如何显示帖子的类别名称?我需要以不同的方式进行设置吗?如果您知道我这样做的方法,请告诉我您的想法。我认为多对多关系是要走的路,但也许不是

4

1 回答 1

0

{{ post.category.name }} 在您的模板中使用。使用多对一关系似乎更合适。像这样使用它。

  class Category(models.Model):
        name = models.CharField(max_length = 50)

    class Post(models.Model):
        title = models.CharField(max_length=50, blank=True)
        category = models.ForeignKeyField('Category')

如果你想保持多对多关系,你可以这样做:

{% for post in posts %}

      {{ post.title }} | of 
      {% for category in post.category_set %}
        {{  category.name }}
      {% endfor%}
{% endfor %}
于 2013-06-16T21:21:54.847 回答