2011-03-01 162 views
5

Django管理應用考慮在Django這個簡化的模型:主/詳細信息頁

class Item(models.Model): 
    title = models.CharField(max_length=200) 
    pub_date = models.DateTimeField() 

class ItemDetail(models.Model): 
    item = models.ForeignKey(Item) 
    name = models.CharField(max_length=200) 
    value = models.CharField(max_length=200) 
    display_order = models.IntegerField() 

有沒有使用管理員用一個看起來像一個形式在同一頁上編輯其細節的項目的方式:

title: <  > 
pub_date: <  > 
details: 
+-----------------+----------------------+-------------------------+ 
|  name  |  value   |  diplay order  | 
+-----------------+----------------------+-------------------------+ 
|<    >|<     >|<      >| 
|<    >|<     >|<      >| 
|<    >|<     >|<      >| 
|<    >|<     >|<      >| 
|<    >|<     >|<      >| 
+-----------------+----------------------+-------------------------+ 

< >將佔位符輸入類型進行數據輸入。

所以,我的問題:我可以使用管理員從父母的角度來編輯foreign key關係嗎?如果沒有辦法通過Django的管理員以這種方式編輯數據,那麼嘗試擴展/定製管理員來執行此操作是個好主意嗎?如何做到這一點的任何方向?

謝謝!

回答

9

這實際上是django擅長處理關係的唯一方向 - 另一種方式比較困難(直接從孩子編輯相關父項)。

爲了得到你想要的格式,考慮的ModelAdmin內聯:
http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.InlineModelAdmin

class ItemDetailInline(admin.TabularInline): 
    model = ItemDetail 

class ItemAdmin(admin.ModelAdmin): 
    inlines = [ 
     ItemDetailInline, 
    ] 
+0

WOW。太棒了。在發佈此問題之前,我閱讀了很多DJANGO管理員文檔。我無法相信我錯過了那麼明顯的事情。非常感謝! – 2011-03-01 23:09:15

+0

沒有問題;)現在我們需要一個內置的方式直接處理下面的外鍵! – 2011-03-01 23:10:56