我有一個大的形式來處理與Django。我的模型是如下Django窗體預加載模型數據
class MerchantContact(models.Model):
merchant = models.OneToOneField(MerchantProfile, related_name="merchant_contact")
ContactUsAddressLine1 =models.CharField(max_length=16)
ContactUsAddressLine2 =models.CharField(max_length=16)
ContactUsAddressCity =models.CharField(max_length=16)
ContactUsAddressState =models.CharField(max_length=4)
ContactUsAddressZip=models.CharField(max_length=16)
ContactUsPhone=models.CharField(max_length=16)
ContactUsAddressFax=models.CharField(max_length=16)
ContactUsEmail=models.CharField(max_length=64)
ContactUsBusinessHours=models.CharField(max_length=256)
我用下面的邏輯來填充表單
def merchantAccountInfo(request):
#check if data is already there or not
usr=UserProfile.objects.get(user_id=request.user.id)
merchant=MerchantProfile.objects.get(user_id=usr.id)
try:
mc=MerchantContact.objects.get(merchant_id=merchant.id)
formdata=MerchantContactForm(
{'id':mc.id,
'ContactUsAddressLine1':mc.ContactUsAddressLine1,
'ContactUsAddressLine2':mc.ContactUsAddressLine2,
'ContactUsAddressCity':mc.ContactUsAddressCity,
'ContactUsAddressState':mc.ContactUsAddressState,
'ContactUsAddressZip':mc.ContactUsAddressZip,
'ContactUsPhone':mc.ContactUsPhone,
'ContactUsAddressFax':mc.ContactUsAddressFax,
'ContactUsEmail':mc.ContactUsEmail,
'ContactUsBusinessHours':mc.ContactUsBusinessHours
}
)
except MerchantContact.DoesNotExist:
formdata=MerchantContactForm()
return render_to_response('account_info.html',locals(),context_instance=RequestContext(request))
上面的代碼工作完美,但我擔心的是,形式可以是具有30+場太大。直接傳遞每個字段將是太繁瑣的方式..
任何其他替代方案來節省時間和代碼行?
這是假設你已經創建了一個'ModelForm'而不是一個標準的'Form',但它應該是一個'ModelForm',如果它不是。 – 2012-08-17 14:11:27