フロントエンドユーザーサインアップフォームには、loginに電子メールを使用しているのでusernameフィールドはありません。次にdjango adminにアクセスできます。djangoのユーザー名フィールドを削除/非表示adminユーザーフォームを編集
ユーザーを編集すると、編集するユーザー名フィールドが表示されますが、そのフィールドを編集可能または表示可能にすることは望ましくありません。
admin.py -
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
from .models import UserProfile
class ProfileInline(admin.StackedInline):
model = UserProfile
can_delete = False
verbose_name_plural = 'Profile'
fk_name = 'user'
class CustomUserAdmin(UserAdmin):
inlines = (ProfileInline,)
list_display = ('email', 'first_name', 'last_name', 'is_staff')
list_select_related = ('profile',)
exclude = ('username',)
def get_inline_instances(self, request, obj=None):
if not obj:
return list()
return super(CustomUserAdmin, self).get_inline_instances(request, obj)
admin.site.unregister(User)
admin.site.register(User, CustomUserAdmin)
forms.py -
from django import forms
from django.contrib.auth.models import User
from django.utils.translation import ugettext as _
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Div, Field
from ajax_select.fields import AutoCompleteSelectField, AutoCompleteField
from phonenumber_field.formfields import PhoneNumberField
from . import models
from captcha.fields import ReCaptchaField
class SignUpForm(forms.Form):
first_name = forms.CharField(max_length=30)
last_name = forms.CharField(max_length=30)
phone_number = PhoneNumberField(label=_("Phone (Please state your country code eg. +44)"))
organisation = forms.CharField(max_length=50)
email = forms.EmailField()
password1 = forms.CharField(max_length=20)
password2 = forms.CharField(max_length=20)
captcha = ReCaptchaField(attrs={'theme' : 'clean'})
models.py--
from __future__ import unicode_literals
from django.db import models
from django.contrib.auth.models import User
from django.utils.translation import ugettext as _
from easy_thumbnails.fields import ThumbnailerImageField
from ciasroot.settings import THUMBNAILER_SIZES, UPLOAD_PATH
from ciasroot.constants import GENDERS, LANGUAGES
from ciasroot.util import HashedPk
from phonenumber_field.modelfields import PhoneNumberField
import math, decimal, datetime, os
class UserProfile(models.Model, HashedPk):
user = models.OneToOneField(User, unique=True, related_name ='profile')
job_title = models.CharField(max_length=128, blank=True, null=False, default="")
website = models.URLField(max_length=255, blank=True, null=True)
organisation = models.CharField(max_length=50, blank=True, null=True, default="")
phone_number = PhoneNumberField(blank=True, null=True)
Djangoのバージョンは1.10私はexclude
使用されます。しかし、それはerror--
KeyError: "Key 'username' not found in 'UserForm'. Choices are: date_joined, email, first_name, groups, is_active, is_staff, is_superuser, last_login, last_name, password, user_permissions."
は、管理者からの新しいユーザーを追加するとき、私はいくつかの点で私はそれを行う必要がある(フロントエンド登録フォームなどのフィールドを得ることはありませんので、私はサインアップフォームを上書きする必要がありますか投げます同じように)。
ご協力いただきまして誠にありがとうございます。
は 'UserProfile'モデルで' username'フィールドですか? yesの場合、 'CustomUserAdmin'ではなく' ProfileInline'に 'exclude'プロパティを設定します。 –
'UserProfile'モデルに' username'フィールドはありません。 –
しかし、 'username'フィールドはどこですか?あなたのモデルを見せてください。 –