我嘗試使用 CustomUserCreationForm 向 UserCreationForm 添加新欄位,但出現此錯誤
TypeError:can only concatenate str(not"tuple") to str
當我將欄位更改為 str 時,我得到了另一個,
這是我的代碼:
表格.py:
from django import forms
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from .models import CustomUser
class CustomUserCreationform(UserCreationForm):
#new UsercreationForm
class Meta(UserCreationForm):
#new meta for UserCreationForm
model = CustomUser
fields = UserCreationForm.Meta.fields ('age',)
class CustomUserChangeForm(UserChangeForm):
#new UserChangeForm
model = CustomUser
fields = UserChangeForm.Meta.fields ('age',)
管理員.py:
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .forms import CustomUserCreationForm, CustomUserChangeForm
from .models import CustomUser
class CustomUserAdmin(UserAdmin):
#new UserAdmin to change defualt model
add_form = CustomUserCreationForm
form = CustomUserChangeForm
model = CustomUser
list_display = ['email','username','age','is_staff',]
admin.site.register(CustomUser,CustomUserAdmin)
模型.py:
from django.db import models
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
age = models.PositiveIntegerField(null=True,blank=True)
idk 代碼有什么問題你能幫忙嗎?
uj5u.com熱心網友回復:
UserChangeForm默認包括所有欄位,使用快捷方式fields = '__all__'
當您嘗試這樣做時,UserChangeForm.Meta.fields ('age',)您正在做'__all__' ('age',)的就是您遇到的錯誤。通常,Python 中的此類錯誤將包含一個堆疊跟蹤,其中還包含有錯誤的行,這可以幫助您在將來除錯此類問題。
如果您確實想要所有欄位,則可以
class CustomUserChangeForm(UserChangeForm):
#new UserChangeForm
model = CustomUser
fields = '__all__'
如果您希望特定欄位是明確的
class CustomUserChangeForm(UserChangeForm):
#new UserChangeForm
model = CustomUser
fields = ('first_name', 'last_name', 'email', 'age',)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/529152.html
