Django:我如何通过另一个模型访问模型的数据?

时间:2013-06-16 21:14:39

标签: django model

我有一个帖子模型,我希望category属性是一组选项。我还希望能够动态更改选项。我目前正在使用多对多关系,因此每当发布帖子时,必须选择一个类别,我可以通过这种方式编辑每个类别的选项。但我无法弄清楚如何访问帖子的所选类别选项。

例如,我可以用标题“apple”发帖并选择类别名称“food”,然后我可以发一个标题为“rose”和类别名称“flower”的帖子。然后我可以在模板上显示每个帖子的标题,但我无法显示或弄清楚如何存储/访问类别名称。

这是我的模特

    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不显示类别,而是显示         

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

1 个答案:

答案 0 :(得分: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 %}