It looks like these ModelForms are going to work well for me. I have a lot less code now. I actually created 2 other classes to help out with the field ordering. I haven't tested these yet...
class OrderedForm(ModelForm): def __init__(self, ordered_fields, *args, **kwargs): super(OrderedForm, self).__init__(*args, **kwargs) self.fields.keyOrder = ordered_fields for f in self.fields: self.fields[f].label = self.fields[f].help_text self.fields[f].help_text = None class ApplicationForm(OrderedForm): def __init__(self, *args, **kwargs): try: ordered_fields = list(self.Meta.fields) except: ordered_fields = [] super(ApplicationForm, self).__init__(ordered_fields, *args, **kwargs) I'll just inherit from ApplicationForm for all my forms. I'm not sure how its going to work with ModelForm inheritance yet though... I don't understand how I'm going to use this forms with the form wizard though, particularly in the done() function. Each form in the wizard contains some of the fields for the model. o = MyObject() for form in form_list: f = form_list[form](instance=o) f.save(commit=False) o.site = Site.objects.get_current() o.save() Does this look right? Thanks for everyone's help so far!! Keith On Aug 23, 3:45 am, coulix <[EMAIL PROTECTED]> wrote: > 1. yes by overlriding the init > > class myForm(forms.ModelForm): > def __init__(self, *args, **kwargs): > super(myForm, self).__init__(*args, **kwargs) > self.fields.keyOrder = ['foo', 'bar',...] > > 2. in the same way you could use > self.fields['foo'].label = self.fields['foo'].help_text > > On Aug 22, 10:40 pm, lingrlongr <[EMAIL PROTECTED]> wrote: > > > So by using a combination of fields and exclude in the Meta class, I > > can choose what fields I want for that form. Nice! :) > > > Two questions though: > > > 1. Will fields be presented in the order specified in the fields > > tuple? > > 2. In my original model/form diagram, will there be a way for me to > > use the model's help_text as the field label? > > > Keith > > > On Aug 22, 4:24 pm, lingrlongr <[EMAIL PROTECTED]> wrote: > > > > Ah, so I guess ModelForm will work with the FormWizard? I'll have to > > > look through that documentation. Reading documentation is easier than > > > pulling my hair out! =) > > > > Thanks Rajesh. > > > > On Aug 22, 4:14 pm, Rajesh Dhawan <[EMAIL PROTECTED]> wrote: > > > > > Hi Keith, > > > > > > I'm using the form wizard for a project. All the field names in > > > > > models.py coincide with the field names in forms.py. There is ONE > > > > > field that is consistently, yet sporadically, causing problems and I > > > > > cannot see why. > > > > > > # models.py > > > > > class PurchaseApplication(BasicApplication): > > > > > down_payment_assets = models.IntegerField(help_text=u'Available > > > > > assets for down payment') > > > > > > # forms.py > > > > > class PurchaseForm3_yes(forms.Form): > > > > > down_payment_assets = forms.IntegerField(label=u'Available assets > > > > > for down payment ($)') > > > > > > So, as I said, all the field names for the model and the form, so to > > > > > save I use: > > > > > > class PurchaseWizard(FormWizard): > > > > > def done(self, request, form_list): > > > > > data = {} > > > > > for f in form_list: > > > > > data.update(f.cleaned_data) > > > > > > o = PurchaseApplication() > > > > > > for f in data: > > > > > o.__setattr__(f, data[f]) > > > > > o.site = Site.objects.get_current() > > > > > o.save() > > > > > > So, its only the down_payment_assets field that is causing problems, > > > > > but only sporadically. The error text looks like this: > > > > > > Exception Type: OperationalError > > > > > Exception Value: (1048, "Column 'down_payment_assets' cannot be > > > > > null") > > > > > > But the request.POST vars in actally show a value!! > > > > > > Variable Value > > > > > 1-credit_rating u'1' > > > > > 2-purchase_home_type u'1' > > > > > 2-down_payment_assets u'30000' > > > > > <----------------------------- > > > > > 0-best_time u'1' > > > > > 1-contact_me u'N' > > > > > wizard_step u'2' > > > > > > Thoughts? > > > > > Looks like o.__setattr__(f, data[f]) is not doing it's job for the > > > > field down_payment_assets. You might want to print or log what's in > > > > 'data' before you iterate over it. > > > > > Also, are you aware that Django's built-in ModelForm provides similar > > > > functionality to what you seem to be trying to achieve above? > > > > >http://www.djangoproject.com/documentation/modelforms/ > > > > > -Rajesh D --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---