我有一个帖子模型,我希望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的关系是要走的路,但也许不是
答案 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 %}