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 にはカテゴリは表示されませんが、

投稿のカテゴリ名を表示するにはどうすればよいですか? これを別の方法で設定する必要がありますか? これを行う方法をご存じでしたら、ご意見をお聞かせください。ManyToMany 関係が進むべき道だと思っていましたが、そうではないかもしれません

4

1 に答える 1

0

{{ post.category.name }} テンプレートで使用します。多対 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.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 に答える