2013-12-16 79 views
0

我在django的文檔中發現了一個奇怪的東西,叫做formset,see it here。我想知道如何使用它的formset是什麼?django formsets用於什麼?

+5

這是坤對於任何人來說,要比文檔給出的更好的解釋是困難的。 – zeantsoi

回答

0

Formset是datagrid的一個例子。
如果您想在一個頁面中使用多個相同類型的表單,則可以使用Formset。
例子:

 
class UserForm(forms.ModelForm): 
    class Meta: 
     model = User 
     fields = ["username", "email"] 

現在,如果你想在一個頁面,你需要使用表單集使用UserForm多次。

 
from django.forms.formsets import formset_factory 
Uforms = formset_factory(UserForm, extra = 4) #extra used to define how many empty forms will display 

進入你的views.py

 
def submit(request): 
    if request.POST: 
     #code to manage post request 
     # validation to formset you can follow django docs 
    else: 
     address_formSet = Uforms(instance=UserForm()) 
    # render response 

模板代碼

 
     {{ address_formset.as_table }} 

您可以按照分步django formset學習。

示例代碼

 
class Address(models.Model): 
    city = models.CharField(max_length=48) 
    zipcode = models.IntegerField(max_length=5) 

class Friend(models.Model): 
    name = models.CharField(max_length=30) 
    address = models.ForeignKey(Address) 

forms.py

 
from django import forms 
from .models import Address, Friend 
from django.forms.models import inlineformset_factory 

MAX_ADDRESS = 2 #updated 
AddressFormSet = inlineformset_factory(Address, Friend, extra=MAX_ADDRESS) #updated 

class UserAddressForm(forms.ModelForm): 
    class Meta: 
     model = Address 

view.py

 
from django.shortcuts import render_to_response 
from .models import * 
from .forms import UserSubmittedAddressForm, AddressFormSet 

def submit(request): 
    if request.POST: 
     #Logic 
    else: 
     form = UserAddressForm() 
     address_formSet = AddressFormSet(instance=Address()) 
    # render response 

模板代碼

 
     {{ form.as_table }} 
     {{ address_formset.as_table }} 
0

它用於處理記錄表。這是一種創建數據網格功能的方式,使得Django可以完成所有繁重的工作(所有記錄的所有數據都在同一POST中發回)。