[英]How do you make a Django Form for a model and all of its children following a particular foreign key?
例如,假設您要創建一個用於Supervisor的ModelForm,該模型還允許您以相同的形式創建或更新3個或更多Underlings。
from django.db import models
class Supervisor(models.Model):
name = models.CharField(max_length=100)
class Underling(models.Model):
supervisor = models.ForeignKey(Superisor, related_name="underlings")
name = models.CharField(max_length=100)
這應該是很標准的,對吧? 只需為下層制作一個FormSet,然后...那又如何呢? Django Admin界面可以做到這一點,那么我該怎么做呢?
首先,您需要為Underling
定義ModelForm :
class UnderlingForm(forms.ModelForm):
class Meta:
model = Underling
然后,您將創建一個UnderlingForm
的FormSet :
UnderlingFormSet = formset_factory(UnderlingForm, extra=3) # 3 Underlings.
然后,您實例化並遍歷它們(或將它們傳遞給模板上下文):
formset = UnderlingFormSet()
for form in formset.forms:
print form.as_table()
由於您還將在同一視圖中擁有一個SupervisorForm,因此建議您也瀏覽一下prefix
選項 。 如果您仍然對Formsets仍有疑問,請參閱官方文檔 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.