J'ai une grande forme à gérer avec django. Mon modèle est comme ci-dessousDjango Formulaire avec données de modèle pré-chargées
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)
J'ai utilisé la logique suivante pour remplir la forme
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))
Le code fonctionne parfaitement au-dessus, mais je crains que la forme pourrait être trop grand avec plus de 30 champs. Passant chaque champs en ligne sera trop fastidieux ..
D'autres alternatives pour gagner du temps et des lignes de code?
Cela suppose que vous avez créé un 'ModelForm' et non un' Form' standard, mais il devrait être un 'ModelForm' si ce n'est pas le cas. –