Raghvendra Pandey
Raghvendra Pandey

Reputation: 93

Including a ModelForm in admin.py from forms.py

I want to add a custom field to admin.py "extra_field" which is defined in YourModelForm class in forms.py
forms.py

***class YourModelForm(forms.ModelForm):***

extra_field = forms.CharField()

def save(self, commit=True):
    extra_field = self.cleaned_data.get('extra_field', None)
    # ...do something with extra_field here...
    return super(YourModelForm, self).save(commit=commit)

class Meta:
    model = movie
    fields = '__all__'

admin.py

    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals

    from django.contrib import admin

    from . models import movie, genre

    from . import forms

    class movieAdmin(admin.ModelAdmin):

        form = YourModelForm

        list_display=('movie_name', 'movie_rating','Date','count',)
        search_fields=('movie_name',)
        filter_horizontal=('movie_genres',)
        list_filter=('Date',)
        date_hierarchy='Date'
        ordering=('-movie_name',)
        fields=('movie_name','movie_rating','movie_genres', 'extra_field',)



    class genreAdmin(admin.ModelAdmin):
         list_display=('genre_name',)


    admin.site.register(movie, movieAdmin)
    admin.site.register(genre, genreAdmin)

NameError: name 'YourModelForm' is not defined

Upvotes: 5

Views: 1016

Answers (1)

Daniel Roseman
Daniel Roseman

Reputation: 599956

You've imported the forms module as a whole, so you need to use that qualified name:

form = forms.YourModelForm

(Note, this is standard Python import semantics, and nothing to do with Django specifically.)

Upvotes: 2

Related Questions