2

Articleサイトのモデルを作成しようとしています。各記事を3〜5の関連記事にリンクしたいので、私が考えているのは、次のようにコードを作成することです。

class Article (models.Model):
    # Tiny url
    url = models.CharField(max_length = 30, unique=True)
    is_published = models.BooleanField()
    author = models.CharField(max_length = 150)
    title = models.CharField(max_length = 200)
    short_description = models.TextField(max_length = 600)
    body = tinymce_models.HTMLField()
    related1 = models.ForeignKey(Article)
    related2 = models.ForeignKey(Article)
    related3 = models.ForeignKey(Article)

ただし、同じモデルに対して外部キー関係を作成できるかどうかはわかりません。また、たとえば、6、7の記事をまとめてバインドすることにした場合、それがどのように機能するか、モデルにrelated4、5、6 ....を記述する必要がありますか?より一般的な解決策が欲しいので、より多くの記事をバインドする場合、コードを何度も再定義する必要はありません

私が考えているのは、Articleモデルを関連フィールドで拡張しないことです。(見た目は醜いです)別のモデルを作成する価値があるのではないでしょうか。例:ArticleSet

しかし、そこに無制限のリストを定義する方法(アイテムの制限なし)。方法を提案できますか?

前もって感謝します

4

2 に答える 2

5

この関係には、 ManyToManyFieldを使用する必要があります。

例えば:

class Article (models.Model):
    # rest of fields up to and including body
    related_articles = models.ManyToManyField("self")
于 2009-10-17T15:47:42.520 に答える
4

基本的に、ManyToMany は配列として扱うことができます。したがって、テンプレートでは、次のようなことができます。

{% for rel_art in cur_art.related_articles.all %}
    <a href="{{rel_art.url}}">{{rel_art.title}}</a>
{% endfor %}

より一般的に言えば、Django のドキュメント(および無料のオンラインDjango Book ) は、FOSSland とほぼ同じくらい優れています。おいしいコーヒーを飲みながら、真剣に読書をすることを強くお勧めします。また、Django のコード自体を読むことで学べることもたくさんあります。よく構造化されていて、コメントも充実しています。django.contrib.flatpages のような単純なアプリを試してみても、それで何ができるかについての実際の洞察が得られます。

于 2009-10-17T19:46:49.610 に答える