Куда я должен добавить дополнительные параметры для создания пользователя?

#django #django-models #django-rest-framework

#django #django-модели #django-rest-framework

Вопрос:

Я следовал руководству по созданию приложения, в котором есть только 1 тип пользователя. В моем собственном приложении я пытаюсь использовать несколько типов пользователей и показывать разные страницы в зависимости от типа пользователя.

Я нахожу, что учитель в учебнике не очень понятен, и я не уверен, как различать пользователей. Пока все, что мне нужно для создания пользователя, — это username and password . Кроме того, эта статья помогла, но все же привела меня в замешательство.

Я хочу иметь возможность добавлять больше полей, но, в основном, различать пользователей (будь то игрок, менеджер или помощник) во время регистрации. Я думал передать is_player=true метод POST для регистрации, но я не уверен, как добавить это поле в регистрацию Django, а затем как создать игрока, менеджера или помощника.

В моих моделях я НЕ создаю модель пользователя, но я создаю модель e для игрока, менеджера и помощника

 # no User model.

class Team(models.Model):
    name = ...
    ...

class Player(models.Model):
    name = 
    team = models.ManyToManyField(Team)

class Manager(models.Model):
    name = 
    players_responsible_For = models.ManyToManyField(Player)
  

В файле serializers я создаю UserSerializer вместе с сериализаторами для других моделей.

 from django.contrib.auth.models import User

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('id', 'username', 'password')
        extra_kwargs = {'password': {'write_only': True, 'required': True}}
    
    def create(self, validated_data):
        user = User.objects.create_user(**validated_data)
        token = Token.objects.create(user=user)
        return user

class PlayerSerializer(models.Model):
    class Meta:
       model = Player
       fields = '__all__'
    ...
  

Тогда это в моем views.py файл, который также ИМЕЕТ UserViewSet

 class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer
    permission_classes = (AllowAny,)
  

Итак, как именно я могу добавить больше полей для создания пользователя и впоследствии создать модель для того, что это за пользователь?

Ответ №1:

Согласно тому, что я понял, вы знаете, что у django есть имя модели User, и вы хотели бы создать пользователей другого типа с другим добавленным параметром, вы можете сделать это следующим образом:

 from django.contrib.auth.models import User
class Player(User):
    address= models.CharField(max_length=100)
  

Здесь вы просто наследуете класс User от django.авторизация и добавление собственного параметра.

Ответ №2:

Вы можете добавлять поля в свои модели.это не создаст никаких проблем.я страдаю от этого несколько дней.