Я создал пользовательскую модель самостоятельно, но я получаю сообщение об ошибке в «ChoiceField».|ПИТОН - ДЖАНГО - PullRequest
0 голосов
/ 05 июля 2019

Я хочу добавить опцию в мою модель пользователя, которую пользователь может выбрать с помощью comboBox при регистрации.На странице регистрации все в порядке, но я получаю сообщение об ошибке, когда я делаю запрос POST для регистрации.

Когда я пытаюсь зарегистрировать пользователя, я получаю сообщение об ошибке "('favour_music' является недопустимым аргументом ключевого словадля этой функции). "* views.py

def register(request):
    form = RegisterForm(request.POST or None)
    if form.is_valid():
        username = form.cleaned_data.get("username")
        password = form.cleaned_data.get("password")
        email = form.cleaned_data.get("email")
        favorite_music = form.cleaned_data.get("favorite_music")

        registeredUser = User(username = username, email = email,favorite_music = favorite_music)
        registeredUser.set_password(password)
        registeredUser.save()
        login(request, registeredUser)
        return redirect("index")
    context = {
            "form" : form
        }
    return render(request,"register.html",context)

admin.py

User = get_user_model()
class UserAdmin(BaseUserAdmin):
    form = UserAdminChangeForm
    add_form = UserAdminCreationForm

    # The fields to be used in displaying the User model.
    # These override the definitions on the base UserAdmin
    # that reference specific fields on auth.User.
    list_display = ('username','email', 'admin')
    list_filter = ('admin','staff','active','favorite_music')
    fieldsets = (
        ('User info', {'fields': ('username','email', 'password')}),
        ('Personal info', {'fields': ('full_name','favorite_music')}),
        ('Permissions', {'fields': ('admin','staff','active')}),
    )
    # add_fieldsets is not a standard ModelAdmin attribute. UserAdmin
    # overrides get_fieldsets to use this attribute when creating a user.
    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('username','email', 'password1', 'password2','active','staff','admin')}
        ),
    )
    search_fields = ('email','username','favorite_music','full_name')
    ordering = ('email',)
    filter_horizontal = ()

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

1 Ответ

0 голосов
/ 05 июля 2019

favorite_music варианты являются кортежем. На уровне базы данных favorite_music сохраняет только значение выбора, а не весь кортеж.

Если вы хотите создать User объект с favorite_music выбором, попробуйте это.

registeredUser = User(username = username, email = email,favorite_music = "Trap") 

Я использую Trap просто, например, вы можете присвоить любое значение из favorite_music выбор кортежа.

...