2011-08-08 47 views
1

讓我們考慮以下模型:對admin內聯場變小部件

class Item(models.Model): 
    pass 

class TagType(models.Model): 
    tag_name = models.CharField() 
    tag_value_type = models.CharField() #or any other serializable field 

#and a class, which is ManyToMany for Item x TagType 
class Tag(models.Model): 
    item = models.ForeignKey(Item) 
    tag_type = models.ForeignKey(TagType) 
    value = models.CharField() 

在Django管理,我想對項目管理中的標籤聯編輯。然而, 我想有變量控件的值類字段的標記類。例如,讓我們 認爲我有兩種標籤類型:COLOR,其中有一個選擇/選項小部件, 和一個SIZE標籤,它具有DecimalField小部件。

如何在更改tag_type字段值時更改值字段的窗口小部件?這個 甚至可能嗎?這難以實現?這意味着,在一個Item實例中,可能會有Tag實例的值域的不同小部件。

回答

0

您可以覆蓋內聯模型使用的表單類的窗口小部件,您可以在其中檢查tag_type,然後告訴值字段您想要用於值的窗口小部件。

然而,這將是創建新的標籤記錄有問題......

當你編輯現有的記錄,你將有一個價值TAG_TYPE確定要使用的小工具,但新記錄還沒有價值 - 你會展示哪個部件?

我認爲你最好的做法是有兩個步驟的過程。一個創建TagType,一個創建/編輯標籤。