Question

I want to inherit a model class from some 3rd party code. I won't be using some of the fields but want my client to be able to edit the model in Admin. Is the best bet to hide them from Admin or can I actually prevent them being created in the first place?

Additionally - what can I do if one of the unwanted fields is required? My first thought is to override the save method and just put in a default value.

Was it helpful?

Solution

If you are inheriting the model then it is probably not wise to attempt to hide or disable any existing fields. The best thing you could probably do is exactly what you suggested: override save() and handle your logic in there.

OTHER TIPS

You can control the fields that are editable in admin.

From the Django docs:

"If you want a form for the Author model that includes only the name and title fields, you would specify fields or exclude like this:

class AuthorAdmin(admin.ModelAdmin):
    fields = ('name', 'title')

class AuthorAdmin(admin.ModelAdmin):
    exclude = ('birth_date',)"

http://docs.djangoproject.com/en/dev/ref/contrib/admin/

Rather than inherit, consider using customized Forms.

  1. You can eliminate fields from display that are still in the model.

  2. You can validate and provide default values in the form's clean() method.

See http://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-custom-validation-to-the-admin

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top