#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:
Вы можете добавлять поля в свои модели.это не создаст никаких проблем.я страдаю от этого несколько дней.