Hi,

i have a problem when saving a form for updating.
In my model, i have a field date_created.
Now when i edit the form, i don't want that field to be editable and
thus is don't include it in the field list.

I have specified a form where i specify the fields that i want to see on the 
form.
I have left 'date_created' out of there.
In my view, i setup the form like this:
    form = ActionForm(request.POST, action)

I thought this would take care of setting the date_created field, apparantly 
not.
I get an error when saving the updated form.

IntegrityError at /management/action/edit/9/
null value in column "date_created" violates not-null constraint

This is the form:

class ActionForm(forms.ModelForm):
    performed_by = 
forms.ModelChoiceField(queryset=User.objects.filter(is_active__exact=True, 
is_staff__exact=True).order_by('first_name') )
    description = forms.CharField(widget=forms.Textarea(attrs={'cols':'90'}))
    class Meta:
        model = Action
        fields = ('performed_by', 'description', 'public')

The model:
class Action(models.Model):
    class Meta:
        verbose_name = _('Action')
        verbose_name_plural = _('Actions')
        db_table = 'calltracking_action'
        ordering = ('date_created',)
        app_label = 'management'
    performed_by = models.ForeignKey(User, limit_choices_to = {'is_staff':True})
    date_created = models.DateTimeField("Date action 
performed",auto_now_add=True, blank=False)
    description = models.TextField()
    call = models.ForeignKey(Call)
    public = models.BooleanField(default=False)
    attachement = models.FileField(upload_to="/files/",blank=True)
    def __unicode__(self):
        return self.description[:40]

The template only contains labels and fields for the 3 visible fields.
I have the same problem with the call field. I don't want people to be able to 
change it.

I now save the info like this in my view:
    actionf=form.save(commit=False)
    actionf.call = Call.objects.get(pk=action.call.id)
    actionf.save()
    form.save_m2m()

What is the best solution for this problem?
Should i explicitely set the date_created in the view too? That would mean i 
just need to get
it from the existing action but as i said, i thought "form = 
ActionForm(request.POST, action)"
took care of that.
Or is it better to specify the fields as hiddenfields?

Thanks

-- 
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.

Reply via email to