我有两个模型:
class User(AbstractUser):
TYPES = (('A', 'Administrador'), ('P', 'Persona'), ('C', 'Corporativo'), ('E', 'Emprendedor'), ('R', 'Reciclador'))
login_type = models.CharField(max_length=1, blank=True, null=True)
account_type = models.CharField(max_length=1, choices=TYPES, blank=True, null=True)
picture_url = models.CharField(max_length=200, blank=True)
is_deleted = models.BooleanField(default=False)
class EcoUser(models.Model):
user = models.OneToOneField(User, related_name='eco_user')
document = models.CharField(max_length=45, blank=True)
phone_number = models.CharField(max_length=45, blank=True)
ubigeo = models.CharField(max_length=6, blank=True)
address = models.CharField(max_length=500, blank=True)
location = models.CharField(max_length=200, blank=True)
def __str__(self):
return str(self.user)
当我想添加一个
用户
它也保存在
生态用户
我想把它们放在一起
序列化程序
这两个模型使用
创造
工作方式如下:
class UserSerializer(serializers.ModelSerializer):
def to_representation(self, instance):
representation = super(UserSerializer, self).to_representation(instance)
eco_user = EcoUser.objects.filter(user_id=instance.id)[0]
representation['document'] = eco_user.document
representation['phone_number'] = eco_user.phone_number
representation['ubigeo'] = eco_user.ubigeo
representation['address'] = eco_user.address
return representation
class Meta:
model = User
fields = ('id',
'username',
'password',
'first_name',
'last_name',
'email',
'login_type',
'account_type',
'picture_url',
'is_deleted'
)
extra_kwargs = {'password': {'write_only': True, 'required': False}}
然而,它只起到了
列表
但不是为了
创造
.
这是我的
视图集
以下内容:
class EcoUserViewSet(viewsets.ModelViewSet):
serializer_class = UserSerializer
queryset = User.objects.exclude(is_deleted=True)
pagination_class = None
@transaction.atomic
def create(self, request, *args, **kwargs):
with transaction.atomic():
try:
data = request.data
serializer = self.get_serializer(data=data)
if serializer.is_valid(raise_exception=True):
serializer.save()
return Response({"status": True, "results": "Datos guardados correctamente"},
status=status.HTTP_201_CREATED)
except ValidationError as err:
return Response({"status": False, "error_description": err.detail}, status=status.HTTP_400_BAD_REQUEST)
如何在一篇文章中保存Ecouser数据?
更新
json发送示例:
{
username: "demo",
firstname: "demin",
lastname: "demon"
login_type: "0",
#ecouser fields
account_type: "A",
document: "74578778",
phone_number: "54545445",
ubigeo: "32114",
}