Django 如何在注册代理用户时添加其他信息?
我已经按照下面的步骤实现了。玩家是一个用户,被代理。我创建了一个Django 如何在注册代理用户时添加其他信息?,django,post,django-models,django-rest-framework,Django,Post,Django Models,Django Rest Framework,我已经按照下面的步骤实现了。玩家是一个用户,被代理。我创建了一个PlayerMore模型,向PlayerMore添加额外的信息,我希望在创建PlayerMore的POST请求中向PlayerMore添加信息。但是PlayerMore的字段甚至没有显示在我的drfapiroot页面中 models.py class User(AbstractUser): class Types(models.TextChoices): PLAYER = "PLAYER"
PlayerMore
模型,向PlayerMore
添加额外的信息,我希望在创建PlayerMore
的POST
请求中向PlayerMore
添加信息。但是PlayerMore的字段甚至没有显示在我的drfapiroot
页面中
models.py
class User(AbstractUser):
class Types(models.TextChoices):
PLAYER = "PLAYER", "Player"
MANAGER = "MANAGER", "Manager"
type = models.CharField(_('Type'), max_length=50,choices=Types.choices,default=Types.PLAYER)
def get_absolute_url(self):
return reverse("users:details", kwargs={"username": self.username})
class PlayerManager(models.Manager):
def get_queryset(self, *args, **kwargs):
return super().get_queryset(*args, **kwargs).filter(type=User.Types.PLAYER)
class PlayerMore(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
player_info = models.CharField(max_length=256)
class Player(User):
base_type = User.Types.PLAYER
objects = PlayerManager()
@property
def more(self):
return self.playermore
class Meta:
proxy = True
def save(self, *args, **kwargs):
if not self.pk:
self.type = User.Types.PLAYER
return super().save(*args, **kwargs)
序列化程序.py
User = get_user_model()
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'username', 'password', 'first_name', 'last_name', 'email')
extra_kwargs = {'passwords': {'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(serializers.ModelSerializer):
class Meta:
model = Player
fields = '__all__'