문제가 NewUserAdmin 클래스 또는 다른 것에서 특정 라인 순서와 관련이 있는지 확실하지 않습니다. 아직 테스트하지는 않았지만 훨씬 이전에이 솔루션에 가까웠다 고 확신합니다. 내가 말하고 있었던 정확한 것 (그것은 일하고있다. 그는 내가 그것을 원했던 방법 :)). 이제는 모든 필드를 사용자 모델에 쉽게 추가 할 수 있으며 세션 관리와 같은 모든 프레임 워크 기능에 계속 연결됩니다. 더 많은 것은 - 나는 AbstractBaseUser 필드 나 OneToOne 필드를 사용하지 않았기 때문에 많은 문제가 발생했다. 어쨌든 - 어떤 도움을 주셔서 감사합니다. 나는 너 없이는 해결하지 않을거야 ... ... 이번 주 : D
PS 나는 모든 수입을 건너 뛰었다. IDE가 필요한 것을 알려줍니다.
models.py
class NewUserManager(UserManager):
def create_user(self, username, email=None, password=None, **extra_fields):
return UserManager.create_user(self, username, email=email, password=password, **extra_fields)
def create_superuser(self, username, email, password, **extra_fields):
return UserManager.create_superuser(self, username, email, password, **extra_fields)
class NewUser(AbstractUser):
newField = models.CharField() # for example CharField
newField = models.CharField(max_length = 12) # important thing - properties should be in the second line
objects = NewUserManager()
class Meta(AbstractUser.Meta):
swappable = 'your_app_name.NewUser'
#db_table = 'auth_user'
admin.py
class NewUserCreationForm(forms.ModelForm):
password1 = forms.CharField(label='Password', widget=forms.PasswordInput)
password2 = forms.CharField(label='Password confirmation', widget=forms.PasswordInput)
class Meta:
model = NewUser
fields = ('username', 'email', 'first_name', 'last_name', 'newField') # few example fields and new one: newField
def clean_password2(self):
password1 = self.cleaned_data.get("password1")
password2 = self.cleaned_data.get("password2")
if password1 and password2 and password1 != password2:
raise forms.ValidationError("Passwords don't match")
return password2
def save(self, commit=True):
user = super(NewUserCreationForm, self).save(commit=False)
user.set_password(self.cleaned_data["password1"])
if commit:
user.save()
return user
class NewUserChangeForm(UserChangeForm):
class Meta(UserChangeForm.Meta):
model = NewUser
fields = ('username', 'email', 'first_name', 'last_name', 'newField', 'last_login', 'is_staff') # few example fields and new one: newField
forms.py
class NewUserAdmin(UserAdmin):
form = NewUserChangeForm
add_form = NewUserCreationForm
list_display = ('username', 'newField', 'first_name', 'last_name', 'last_login',) # few example fields and new one: newField
fieldsets = (
(None, {'fields': ('username', 'email', 'first_name', 'last_name', 'newField', 'last_login', 'is_staff')}), # few example fields and new one: newField
)
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('username', 'newField', 'password1', 'password2')} # here are fields you want to have in django-admin AddUser view
), # one of the most important place above
)
admin.site.register(NewUser, NewUserAdmin)
워드 프로세서가 포함 커스텀 사용자 모델의 매우 심층 예를 수득 커스텀'UserCreationForm' https://docs.djangoproject.com/ko/1.7/topics/auth/customizing/#a-full-example – Ngenator
나는 django- docs, 그래서 충분히 명확하지 않은 경우 - 나는 또한 이러한 솔루션을 시도했습니다. add_form = UserCreationForm과 같이 문제가있는 것 같습니다. 이것의 효과가없는 것 같아서 왜 찾을 수없는 것입니다. 둘째, AbstractUser 대신 AbstractBaseUser를 사용하면 완전히 새로운 오류 집합이 생성됩니다. – wisienka91
글쎄, 당신의 질문에 대한 답변이 끝났습니다. 구현 방식에 문제가 생기면 코드를 보지 않고는 아무 것도 할 수 없습니다. – Ngenator