如果你想要一個列和一個畫廊之間的關係,你的模型應該反映這一點。所以如果我理解正確:一個頁面有名稱和列。一列有文字,畫廊(可選)和訂購。
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,
]
注:我把你的「圖庫顯示名稱'在圖庫中顯示爲'名稱'。讓畫廊的名字只有一次更有意義。但是,如果一個畫廊位於不同名稱的更多位置,那麼您需要一個字段(例如'gallery_display_name = models.CharField(max_lenght = 200)')。
這是你的問題的答案?我希望它有幫助!
我認爲在頁面加載後用JS移動這些塊更容易 – ilvar 2012-04-06 05:53:48