Django Rest Framework, пользовательские модели получают ошибку - PullRequest
0 голосов
/ 07 мая 2020

Мой проект - это простое приложение для блога, в котором пользователи могут публиковать, комментировать и лайкать сообщения. Я использовал страницу регистрации пользователя Django по умолчанию, позже я добавляю Djoser (аутентификация стороннего токена для Django rest framework) с настраиваемой моделью пользователя, это приводит к cra sh, пожалуйста, посмотрите это

обратите внимание, что если я избегаю пользовательского пользователя для Djoser, мой проект будет работать нормально, ie я могу зарегистрироваться с использованием токена и аутентификации сеанса

FORMS.PY # для Django вид реестра по умолчанию

from django import forms
#from django.contrib.auth.models import User
from .models import User
from django.contrib.auth.forms import UserCreationForm

class UserRegisterForm(UserCreationForm):
    email = forms.EmailField()
    class Meta:
        model = User
        fields=['username','email','phone','first_name','last_name','password1','password2']

MODELS.PY # Пользовательская модель Djoser

from django.db import models
from django.contrib.auth.models import AbstractUser
from django.conf import settings

class User(AbstractUser):
    email = models.EmailField(verbose_name='email' ,max_length=223,unique=True)
    phone=models.CharField(null=True,max_length=11)
    REQUIRED_FIELDS = ['username','phone','first_name','last_name']
    #USERNAME_FIELD = 'email'

    def get_username(self):
        return self.email

ОТСЛЕЖИВАНИЕ ОШИБКИ

ERRORS:
auth.User.groups: (fields.E304) Reverse accessor for 'User.groups' clashes with reverse accessor for 'User.groups'.
        HINT: Add or change a related_name argument to the definition for 'User.groups' or 'User.groups'.
auth.User.user_permissions: (fields.E304) Reverse accessor for 'User.user_permissions' clashes with reverse accessor for 'User.user_permissions'.
        HINT: Add or change a related_name argument to the definition for 'User.user_permissions' or 'User.user_permissions'.
userapp.User.groups: (fields.E304) Reverse accessor for 'User.groups' clashes with reverse accessor for 'User.groups'.
        HINT: Add or change a related_name argument to the definition for 'User.groups' or 'User.groups'.
userapp.User.user_permissions: (fields.E304) Reverse accessor for 'User.user_permissions' clashes with reverse accessor for 'User.user_permissions'.
        HINT: Add or change a related_name argument to the definition for 'User.user_permissions' or 'User.user_permissions'.

1 Ответ

2 голосов
/ 07 мая 2020

Вы должны добавить AUTH_USER_MODEL в свой settings.py . Это позволит изменить вашу модель User по умолчанию на новую. Следовательно, будет работать нормально:

AUTH_USER_MODEL = 'APPNAME.MODELCLASSNAME'

В вашем случае AppName - это приложение внутри, где находится ваш models.py. Это может быть accounts или sthg вроде этого:

AUTH_USER_MODEL = 'accounts.User'

Взгляните на эту красивую документацию по настройке аутентификации User. customize_user_ django

* Примечание: accounts - это мое предположение об имени вашего приложения, которое вы не указали, User уверен, что вы указали в models.py

...