カラムとギャラリーの間にリレーションシップを望む場合、モデルにはそのことが反映されます。だから私が正しく理解しているなら:ページには名前と列があります。列にはテキスト、ギャラリー(オプション)、および順序があります。
models.py:
class Page(models.Model):
name = models.CharField(max_length=200)
class Gallery(models.Model):
name = models.CharField(max_length=200)
class Column(models.Model):
page = models.ForeignKey(Page)
text = models.TextField()
gallery = models.ForeignKey(Gallery, null=True, blank=True) # Optional
ordering = models.IntegerField()
class Meta:
ordering = ('ordering',)
この例では、順序はIntegerFieldとによって行われる方法を示しています。
class ColumnInline(admin.TabularInline): # or StackedInline
model = Column
class PageAdmin(admin.ModelAdmin):
inlines = [
ColumnInline,
]
注:あなたがあなたのadmin.pyで
models.datetimeField(auto_now_add=True)
と
ordering = models.IntegerField()
を交換彼らは追加どこ瞬間に基づいて列を注文したい場合は、私はあなたの「ギャラリーを置きますギャラリーの '表示名'を '名前'として表示します。ギャラリーに一度だけ名前を付けるほうが意味があります。しかし、ギャラリーが異なる名前の場所にある場合は、列モデルでフィールド(「gallery_display_name = models.CharField(max_lenght = 200)」など)が必要です。
これはあなたの質問に対する回答ですか?私はそれが助けて欲しい!
ページが読み込まれた後、JSでこれらのブロックを移動する方が簡単だと思います – ilvar