views:

31

answers:

1
class SomeModel(models.Model):
     text = models.TextField()
     ip = models.IPAddressField()
     created_on = models.DateTimeField()
     updated_on = models.DateTimeField()

Say I have that as a model, what if I wanted to only display 'text' field widget for the user to submit data, but I obviously wouldn't want the user to see the widgets for ip,created_on, updated_on to be changed. Yes I know I can add it as a hidden field for the form, but that's not what I'm looking for.

I'm more wondering how can I not render those fields at all when rendering my form, and just dynamically populating the fields when a form is posted and pass form validation? I'm guessing to somehow override the blank values of ip,created_on,updated_on while the form is being cleaned/validated. I know how to do this in the view by using request.POST.copy and injected my values, but I'd like to know if it's possible in models or forms.

+2  A: 

Two things:

First ModelForms:

Class SomeModelForm(ModelForm):
    class Meta:
        exclude = ['ip','created_on', 'updated_on']

Two Model Fields API:

class SomeModel(models.Model):
   text = models.TextField()
   ip = models.IPAddressField()
   created_on = models.DateTimeField(auto_now_add=True)
   updated_on = models.DateTimeField(auto_now=True)

Three:

For ip, i think you should to that in your views.

diegueus9