Seems like an elegant and logical solution. Thanks, Michael!
On Tue, 24 Jul 2007 21:04:50 +0000, Michael wrote:
> When I came across the same issue (model default values not being
> selected), I simply stopped using form_for_model for new forms and
> instead created an instance of my model in memory then used
> form_for_instance... for eg:
>
> p = Post()
> PostForm = form_for_instance(p)
>
> That way the default values for the model are set when the new object is
> created.
>
> Hope that's relevant to your situation... not 100% sure.
>
> On Jul 25, 6:19 am, Patrick <[EMAIL PROTECTED]> wrote:
>> On Tue, 24 Jul 2007 11:51:36 -0700, Doug B wrote:
>> > I don't know how others have approached it, but I have a 'settings'
>> > file with defaults defined in one place and reference those values
>> > via imports in the form file and model file. For values specific for
>> > the app, I stick them in the models file.
>>
>> > models.py
>> > ---------
>> > POST_DEFAULTS = {'status':'published'}
>>
>> > class Post(models.Model):
>> > status = models.CharField(
>> > maxlength = 15,
>> > choices = PUBLICATION_STATUS,
>> > default = POST_DEFAULTS['status'])
>>
>> > forms.py
>> > ---------
>> > from app.models import POST_DEFAULTS,PUBLICATION_STATUS
>>
>> > class PostForm(forms.Form):
>> > status =
>> > forms.CharField(forms.CharField(widget=forms.Select
>>
>> (choices=PUBLICATION_STATUS,
>>
>> > initial = POST_DEFAULTS['status'])
>>
>> > ---or--- if you are doing form_for_* (I don't use those, but this
>> > should be close)
>>
>> > views.py
>> > ---------
>> > PostForm = form_for_model(Post)
>> > PostForm.base_fields['status'].initial = POST_DEFAULTS['status'] form
>> > = PostForm()
>>
>> > If you use the helpers, the important thing to remember is to modify
>> > the base_fields dict before instantiating the form. Yet another
>> > option, is to create a callback function passed to form_for_model.
>> > The callback function basically gets called for every field in the
>> > model and you have the choice of making changes for each field. That
>> > method always felt cumbersome compared to just changing the values
>> > you need changed, so I can't do it off the top of my head. A search
>> > for formfield callback should tell you how though.
>>
>> Thanks for this tip, Doug. It works.
>>
>> I somehow missed it in the docs.
>
>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected]
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
-~----------~----~----~----~------~----~------~--~---