[英]How to build Rest Api for custom model with one to one relationship with django user model
我想建立一個REST API端點,以便在與從abstractuser繼承的Users模型具有一對一關系的模型上進行創建操作。
這是用戶模型
class Users(AbstractUser):
is_user = models.BooleanField(default=False)
is_admin = models.BooleanField(default=False)
這是我的管理員模型
class Admin(models.Model):
user = models.OneToOneField(Users, on_delete=models.CASCADE, primary_key=True, related_name='admin')
organization = models.CharField(max_length=255, blank=True)
def __str__(self):
return self.organization
這是我的序列化器
class UsersSerializers(serializers.ModelSerializer):
class Meta:
model = Users
fields = ('id', 'username', 'password')
write_only_fields = ('password',)
這是我的創建api視圖
class UserCreateView(generics.ListCreateAPIView):
"""
This class defines the create behavior of our rest api.
get:
Return a list of all the existing users.
post:
Create a new user instance.
"""
queryset = Users.objects.all()
serializer_class = UsersSerializers
def perform_create(self, serializer):
"""Save the post data when creating a new Book."""
# serializer.save()
instance = serializer.save()
instance.set_password(instance.password)
instance.save()
我還希望能夠與用戶模型一起序列化管理模型及其字段的實例,我不知道該如何做,但是我希望能夠在用戶模型字段旁邊顯示管理模型字段並保存管理模型數據以及用戶模型。
在serializer
一個字段,如下所示
class UsersSerializers(serializers.ModelSerializer):
organization = serializers.CharField()
class Meta:
model = Users
fields = ('id', 'username', 'password', 'organization')
write_only_fields = ('password',)
現在,在perform_create
方法中,為Admin
創建一個對象
def perform_create(self, serializer):
"""Save the post data when creating a new Book."""
# serializer.save()
instance = serializer.save()
instance.set_password(instance.password)
instance.save()
organization = serializer.validated_data.get('organization')
Admin.objects.create(
user=instance,
organization=organization
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.