列とギャラリーの間の関係が必要な場合は、モデルにそれが反映されている必要があります。したがって、正しく理解できれば、ページには名前と列があります。列には、テキスト、ギャラリー (オプション)、順序があります。
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 によって順序付けが行われる方法を示しています。列が追加された瞬間に基づいて列を並べ替えたい場合は、置き換えます
ordering = models.IntegerField()
と
models.datetimeField(auto_now_add=True)
admin.py で:
class ColumnInline(admin.TabularInline): # or StackedInline
model = Column
class PageAdmin(admin.ModelAdmin):
inlines = [
ColumnInline,
]
注:「ギャラリー表示名」を「名前」としてギャラリーに入れました。ギャラリーに一度だけ名前を付ける方が理にかなっています。ただし、ギャラリーが異なる名前の複数の場所にある場合は、Column モデルにフィールド (「gallery_display_name=models.CharField(max_length=200)」など) が必要です。
これはあなたの質問に対する答えですか?それが役立つことを願っています!