簡體   English   中英

您如何為模型及其遵循特定外鍵的所有子項創建Django表單?

[英]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

然后,您將創建一個UnderlingFormFormSet

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM