2010-12-08 223 views
0

我的模型如下圖所示:關於Django管理頁面cacade外鍵

class Manufacturers(models.Model): 
    name = models.CharField() 

class Phones(models.Model): 
    manufacturer = models.ForeignKey(Manufacturers) 
    name = models.CharField() 

class Prices(models.Model): 
    phone = models.ForeignKey(Phones) 
    price = models.DecimalFeild() 

和我在admin.py

我的問題是註冊他們: 在Django的管理界面,當我添加一個價格,我可以從下拉列表中選擇一個手機,但有這麼多的手機,所以我想先選擇製造商,然後從製造商的手機中選擇手機。我該如何做到這一點。 非常感謝。

回答

1

這個術語是「chained select menus」。

有一些implementations in django。一個你可能會覺得有用的是django-smart-selects

使用Django的智能選擇,這是你會怎麼寫你的機型:

class Manufacturers(models.Model): 
    name = models.CharField() 

class Phones(models.Model): 
    manufacturer = models.ForeignKey(Manufacturers) 
    name = models.CharField() 

class Prices(models.Model): 
    phone = ChainedForeignKey(
     Phone, 
     chained_field="manufacturer", 
     chained_model_field="manufacturer", 
     show_all=False, 
     auto_choose=True 
    ) 
    price = models.DecimalField() 

所有這一切說,我不知道你是在最好的方式實現這一點。

將價格顯示在每個電話的管理員表單中可能會更好。因此,不要創建價格記錄並從下拉菜單中選擇手機,而是創建該手機的記錄並添加價格記錄。請參閱django的文檔InlineModelAdmin

+0

非常感謝! – Peter 2010-12-09 14:20:46