2011-12-24 65 views
2

models.py:用於創建具有一對多關係的新對象的內聯表單?

class Item(models.Model): 
    name = models.CharField(max_length=50) 

class ItemImage(models.Model): 
    image = models.ImageField(upload_to='item_pics') 
    item = models.ForeignKey(Item, related_name='images') 

利用上述定義的模型,Item具有一對多的關係來ItemImage。我正在一個Django的形式,使用戶能夠創建一個新的Item例如,對於上傳最多兩個ItemImage的選擇沿。請注意,需要在同一階段創建Item和關聯ItemImage對象。

forms.py:

class ItemForm(ModelForm): 
    img_1 = fields.ImageField() 
    img_2 = fields.ImageField() 

    class Meta: 
     model = Item 
     fields = ('name', 'description', 'circles', 'location', 'rental_fee', 'rental_time_unit', 'deposit', 'rental_rules',) 

在第二個想法,而不是添加圖像領域ItemForm,我猜測它可能是一個更好的方法來創建一個ItemImageModelForm使用直列formset。我從來沒有使用內聯formset,因此我的概念仍然是模糊的。我想知道這是否是使用內聯formset的正確方案。

回答

2

是的,這將是你將使用ModelFormSet一個很典型的情況。如果img_1和IMG_2是類項目的實際領域

在forms.py使用的方法是適當的,但與一組相關模型的處理時,ModelFormSet是一個更好的選擇。

考慮,你希望允許用戶三個圖像而不是兩個未來的情況。使用ModelFormSet,這將是一個字符代碼更改。如果你想收集ItemImage類的輔助信息,這也將是一個微不足道的變化。

+0

感謝確認我的猜測,並指出正確的道路。 – tamakisquare 2011-12-24 07:46:02

+0

@tamakisquare從昨天開始,我一直試圖圍繞這一點。上面的工作示例可能有所幫助!基本上,我想知道如何使用表單集_along WITH_已經在上 – Anupam 2017-10-11 05:47:14

+0

頁@Anupam我希望我可以幫助你在這裏所使用的模型形式的模型,但因爲我最後一次使用Django的服務器端渲染它已經多年。我所有的Django代碼僅用於API。 – tamakisquare 2017-10-11 18:04:03

相關問題