次のサイト構造があります。
- Windows
- 98
- Subpage1
- Subpage2
- XP
- ....
- 7
- ....
- Mac
- 10.7
- Subpage1
- Subpage2
- 10.8
- ...
- 10.9
- Ubuntu
- 13.10
各 OS はアプリであり、相互参照を表す各アプリの追加モデルが必要です。参照は任意のページに移動できます。
したがって、疑似コードは次のようになります。
class Reference(models.Model):
title = models.CharField(_('title'), max_length=200)
links_to = models.ForeignKey(Windows | Mac | Ubuntu)
一般的な関係に関するビューの投稿を見つけましたが、問題の解決策を使用できませんでした。
優れた、わかりやすいチュートリアルまたはヘルプへのリンクは素晴らしいでしょう。
ありがとう
編集:
これはうまくいくかもしれないと思いました。しかし、この例では 1 つのプロパティ (スラッグ) にしかアクセスできず、オブジェクト全体にはアクセスできません。
from django.db import models
from itertools import chain
from otherapp.models import Geschaeftsfelder
from otherapp.models import Themenschwerpunkte
from otherapp.models import Themen
from django.utils.translation import ugettext as _
from common.fields import MarkdownTextField, translated_field
class Box(models.Model):
title = models.CharField(max_length=100)
headline_de = MarkdownTextField(verbose_name=_(u'Inhaltstext (dt.)'), blank=True)
geschaeftsfelder = Geschaeftsfelder.objects.values_list('slug', 'title')
themenschwerpunkte = Themenschwerpunkte.objects.values_list('slug', 'title')
themen = Themen.objects.values_list('slug', 'title')
result_list = chain(geschaeftsfelder, themenschwerpunkte, themen)
links_to = models.CharField(
max_length=200,
choices= result_list
)
編集2: 一般的なコンテンツタイプを使用したソリューションも試しました:
次のコードを Box モデルに追加すると、適切なコンテンツ タイプ (themenschwerpunkte、geschaeftsfelder など) のドロップダウン リストが表示されます。
しかし、まだ特定のページへのリンクを作成できません。
# http://stackoverflow.com/questions/6335986/how-can-i-restrict-djangos-genericforeignkey-to-a-list-of-models?lq=1
limit = models.Q(app_label = 'geschaeftsfelder', model = 'geschaeftsfelder') | models.Q(app_label = 'geschaeftsfelder', model = 'themenschwerpunkte') | models.Q(app_label = 'geschaeftsfelder', model = 'themen')
content_type = models.ForeignKey(ContentType, limit_choices_to = limit)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
編集3:
回答と時間を割いていただきありがとうございますが、djangoCMS の代わりに feinCMS を使用します。これは私にとってはるかに理解しやすく、より適しています。