django管理员中重新定义表单的工作不正确

django管理员中重新定义表单的工作不正确,django,django-models,django-forms,Django,Django Models,Django Forms,我已经创建了自定义模型配置文件,并将其链接到用户模型,效果很好。但是,现在我想在Django admin中创建自定义UserCreateForm。我重新定义了它并添加了必要的字段,但之后仍然显示了profile model中的所有字段,例如:phone、home\u address。我需要在UserCreateForm中将字段显示为:“名字”、“姓氏”、“用户名”、“密码1”、“密码2”。我做错了什么 from django.contrib import admin from django.co

我已经创建了自定义模型配置文件,并将其链接到用户模型,效果很好。但是,现在我想在Django admin中创建自定义UserCreateForm。我重新定义了它并添加了必要的字段,但之后仍然显示了profile model中的所有字段,例如:phone、home\u address。我需要在UserCreateForm中将字段显示为:“名字”、“姓氏”、“用户名”、“密码1”、“密码2”。我做错了什么

from django.contrib import admin
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.forms import UserCreationForm
from .models import Profile

class NewUserCreateForm(UserCreationForm):

   class Meta:
       fields = ('username', 'first_name', 'last_name',)

class ProfileInline(admin.TabularInline):
    model = Profile

class UserAdmin(UserAdmin):

   add_form = NewUserCreateForm

   add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('first_name', 'last_name', 'username','password1', 'password2', ),
       }),
       )
   inlines = [ProfileInline]

admin.site.unregister(User)
admin.site.register(User, UserAdmin)

首先,您的
models.py
文件将是:

from django.db import models

from django.contrib.auth.models import User

# Create your models here.

class Profile(models.Model):
    user_id = models.OneToOneField(User, on_delete=models.CASCADE) 
    phone = models.CharField(max_length=100)
    address = models.CharField(max_length=256)

然后是您的
admin.py
文件

from.models import Profile
# Register your models here.


class ProfileAdmin(admin.ModelAdmin):
    model = Profile
    exclude = ['phone',] # Or whatever you don't want to display.

admin.site.register(Profile, ProfileAdmin)
对于扩展实施,请根据需要添加或删除


希望有帮助。

如果您想禁用某些字段,请尝试
类UserAdmin(admin.ModelAdmin):只读字段=('first\u name','last\u name','username',)
是否需要从admin.ModelAdmin继承?我是从UserAdmin和指示字段继承的:在只读字段中有phone和home\u address,但它们仍然显示。我只需要在UserCreateFormi中隐藏这些字段,如果我在您的节目中,我将尝试在
类Meta
中的我的表单中利用
排除
。因此,请尝试更改您的代码
exclude:('phone','home\u address',)
。我正在以元类形式NewUserCreateForm:exclude=('phone','home\u address',)添加exclude,并且仍然显示。如果我能提供帮助,我已经在我的代码中添加了模型用户的帮助,如果我使用这个代码段:
class ProfileInline(admin.tablerinline):model=Profile readonly\u fields=('phone','home\u address',)
。你试过没有结果吗?