I guess my use case is very common but somehow I can't find any examples that did as what I want. I just want to provide a form to edit an existing record so it supposed to be as simple as:-
Get the instance:- customer = Customer.objects.get(id=1) Create form instance and pass a dict of data from customer instance:- form = CustomerForm(initial=customer.__dict__) #instance of ModelForm The problem is, if my models has a foreign key fields, the rendered select input would not set the initial value (selected) because the select input name="state" while the key in customer.__dict__ is state_id. The models: class Customer(models.Model): state = models.ForeignKey(State, db_column='state', verbose_name='Negeri') and the form:- class CustomerForm(forms.ModelForm): class Meta: model = Customer >>> customer.__dict__ {'created': None, 'created_new': None, 'notes': u'Test', 'refferer': 1, 'state_id': u'kelantan', 'id': 2} While customer.state is an instance of State object and does not appear in .__dict__ and even it appear newforms won't render. The solutions that I can think of:- 1) Use state_id as a db_column - Don't really like it since 'state' better expressed the data it contain. 2) Explicitly set every form field - Don't like it either since it some kind of violate DRY. The fields already explicitly defined in the models so we should assumed that as an authoritative definition. We just feed it with a dict and let the validation routine handle the rest. I'd really hope someone can point me to the right direction, maybe I'm missing something somewhere ? Thanks. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---