gpt4 book ai didi

python - Django:list_display[4] 的值指的是 'age' ,它不是可调用的,等等

转载 作者:太空狗 更新时间:2023-10-30 02:42:57 25 4
gpt4 key购买 nike

当我创建它的实例时,我试图扩展用户模型以向我的“人”模型添加额外的属性,但我不断收到以下错误:

ERRORS:
<class 'polls.admin.PersonAdmin'>: (admin.E108) The value of 'list_display[4]' refers to 'age', which is not a callable, an attribute of 'PersonAdmin', or an attribute or method on 'auth.User'.
<class 'polls.admin.PersonAdmin'>:(admin.E108) The value of 'list_display[5]' refers to 'city', which is not a callable, an attribute of 'PersonAdmin', or an attribute or method on 'auth.User'.
<class 'polls.admin.PersonAdmin'>: (admin.E108) The value of 'list_display[6]' refers to 'state', which is not a callable, an attribute of 'PersonAdmin', or an attribute or method on 'auth.User'.

人物模型:

class Person(models.Model):
""" The model which defines a user of the application. Contains important
information like name, email, city/state, age, etc """
user = models.OneToOneField(User, on_delete=models.CASCADE)
first_name = models.CharField(max_length=200, null=True)
last_name = models.CharField(max_length=200, null=True)
email = models.CharField(max_length=200, null=True)
city = models.CharField(max_length=200, null=True)
state = models.CharField(max_length=200, null=True)
age = models.CharField(max_length=50, null=True)

创建帐户 View :

def create_account(request):
# function to allow a user to create their own account
if request.method == 'POST':
# sets a new user and gives them a username
new_user = User(username = request.POST["username"],
email=request.POST["email"],
first_name=request.POST["first_name"],
last_name=request.POST["last_name"],
age=request.POST["age"],
city=request.POST["city"],
state=request.POST["state"]
)

# sets an encrypted password
new_user.set_password(request.POST["password"])
new_user.save()
# adds the new user to the database
Person.objects.create(user=new_user,
first_name=str(request.POST.get("first_name")),
last_name=str(request.POST.get("last_name")),
email=str(request.POST.get("email")),
age=str(request.POST.get("age")),
city=str(request.POST.get("city")),
state=str(request.POST.get("state"))
)
new_user.is_active = True
new_user.save()
return redirect('../')
else:
return render(request, 'polls/create_account.html')

admin.py 的片段:

class PersonInline(admin.StackedInline):
""" Details a person in line. """
model = Person
can_delete = False
verbose_name_plural = 'person'

class PersonAdmin(admin.ModelAdmin):
""" Defines a Person's information on the admin site
with displays listed below. """
list_display = ('username', 'email', 'first_name', 'last_name', 'age', 'city', 'state')
inlines = (PersonInline, )

关于如何让它工作的任何想法?

最佳答案

您不能使用 admin.site.register(User, PersonAdmin),因为 UserPerson 不是同一个模型。此外,您似乎正试图在用户管理中包含这些 Person 模型字段:

from django.contrib.auth.admin import UserAdmin

class PersonInline(admin.StackedInline):
""" Details a person in line. """
model = Person
can_delete = False
verbose_name_plural = 'person'

fields = ('username', 'email', 'first_name', 'last_name', 'age', 'city', 'state')

class UserAdmin(UserAdmin):
inlines = [
PersonInline
]

# Re-register UserAdmin
admin.site.unregister(User)
admin.site.register(User, UserAdmin)

关于python - Django:list_display[4] 的值指的是 'age' ,它不是可调用的,等等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34969299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com