Django 如何使用DRf中的嵌套序列化程序和视图集同时更新和创建?

Django 如何使用DRf中的嵌套序列化程序和视图集同时更新和创建?,django,django-models,django-rest-framework,django-views,django-serializer,Django,Django Models,Django Rest Framework,Django Views,Django Serializer,我的模型: class User(AbstractUser): password = models.CharField(max_length=128, blank=True, null=True) email = models.EmailField(max_length=254, unique=True) dial_code_id = models.CharField(max_length=100) mobile_number = models.CharField

我的模型:

class User(AbstractUser):
    password = models.CharField(max_length=128, blank=True, null=True)
    email = models.EmailField(max_length=254, unique=True)
    dial_code_id = models.CharField(max_length=100)
    mobile_number = models.CharField(max_length=100, unique=True)
    username = models.CharField(max_length=150, unique=True, blank=True, null=True)
    is_active = models.BooleanField(default=True)

    class Meta:
        db_table = "my_user"


class UserLocation(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='location')
    latitude = models.DecimalField(max_digits=8, decimal_places=3)
    longitude = models.DecimalField(max_digits=8, decimal_places=3)
    address = models.TextField()

    class Meta:
        db_table = "user_location"
我必须更新“first_name”、“last_name”,同时必须在“UserLocation”表中为同一用户创建一个对象。 为此,我创建了一个视图集

class BasicInformationViewSet(viewsets.ModelViewSet):
  queryset = User.objects.all()
  serializer_class = BasicInformationSerializer

  def list(self, request, *args, **kwargs):
      custom_data = {
          "status": False,
          "message": 'Method Not Allowed',
      }
      return Response(custom_data, status=status.HTTP_200_OK)

  def create(self, request, *args, **kwargs):
      custom_data = {
          "status": False,
          "message": 'Method Not Allowed',
      }
      return Response(custom_data, status=status.HTTP_200_OK)

  def update(self, request, *args, **kwargs):
      instance = self.get_object()
      serializer = self.get_serializer(instance, data=request.data)
      if serializer.is_valid():
          serializer.save()
          custom_data = {
              "status": True,
              "message": 'Successfully added your basic information',
          }
          return Response(custom_data, status=status.HTTP_200_OK)
      else:
          custom_data = {
              "status": False,
              "message": serializer.errors,
          }
          return Response(custom_data, status=status.HTTP_200_OK)
上述视图的序列化程序:

class UserLocationSerializer(serializers.ModelSerializer):
  latitude = serializers.DecimalField(max_digits=8, decimal_places=3, required=True)
  longitude = serializers.DecimalField(max_digits=8, decimal_places=3, required=True)
  address = serializers.CharField(required=True)

  class Meta:
      model = UserLocation
      fields = "__all__"


class BasicInformationSerializer(serializers.ModelSerializer):
  first_name = serializers.CharField(required=True)
  last_name = serializers.CharField(required=True)
  location = UserLocationSerializer()

  class Meta:
      model = User
      fields = ['first_name', 'last_name', 'location']

  def update(self, instance, validated_data):
      instance.first_name = validated_data.get('first_name', instance.first_name)
      instance.last_name = validated_data.get('last_name', instance.last_name)
      instance.save()
      return instance
“first_name”和“last_name”正在更新,但“UserLocation”模型中的字段未更新/创建

多谢各位