如果您想要列和图库之间的关系,您的模型应该反映这一点。所以如果我理解正确:一个页面有名称和列。列具有文本、图库(可选)和排序。
模型.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_lenght=200)')。
这是你问题的答案吗?我希望它有帮助!