在 forms.py 的 admin.py 中包含 ModelForm

Rag*_*dey 5 python django django-models django-forms django-admin

我想向 admin.py “extra_field”添加一个自定义字段,该字段在forms.py
forms.py中的 YourModelForm 类中定义

***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__'
Run Code Online (Sandbox Code Playgroud)

管理员.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)
Run Code Online (Sandbox Code Playgroud)

NameError:名称“YourModelForm”未定义

Dan*_*man 2

您已将forms模块作为一个整体导入,因此您需要使用该限定名称:

form = forms.YourModelForm
Run Code Online (Sandbox Code Playgroud)

(注意,这是标准的 Python 导入语义,与 Django 无关。)