Я использую многие из них в своем сериализаторе для создания новых полей. Мне нужно реализовать обновление, чтобы добавить новые поля и оставить существующие как есть. Mycode приведен ниже.
модели.py
class Device(models.Model):
device_id = models.CharField(max_length=200)
auth_token = models.CharField(max_length=100)
class ThirdPartyApps(models.Model):
auth_token = models.ForeignKey(Device, on_delete=models.CASCADE)
app_name = models.CharField(max_length=100)
сериализаторы.py
class AppSerializer(serializers.ModelSerializer):
class Meta:
model = Apps
fields = ('app_name', 'auth_token_id')
def create(self, validated_data):
if "auth_token_id" in self.context:
id1 = self.context["auth_token_id"]
instance = self.Meta.model(**validated_data)
user_id = id1
if user_id is not None:
instance.auth_token_id = user_id
instance.save()
return instance
просмотры.py
@api_view(['POST'])
def add_apps(request):
data = request.data
auth_token = request.META.get('HTTP_AUTHTOKEN', '')
auth_tok = Device.objects.get(auth_token=auth_token)
a_id = auth_tok.id
serializer = AppSerializer(ThirdPartyApps, data=data, context={"auth_token_id": a_id}, many=True)
if serializer.is_valid():
serializer.save()
content = collections.OrderedDict(
[('status', True), ('message', "Third party apps are saved")])
return Response(content, status=status.HTTP_200_OK)
else:
return Response(serializer.errors)
Я попытался использовать поддержку обновлений django, указав имя модели и передав его сериализатору для вызова метода обновления. Но он говорит, что когда many=True, обновление не поддерживается, поддерживается только метод создания. Предлагается использовать класс ListSerializer
и переопределить `.update() в моих сериализаторах. Я не могу понять, как его использовать. Я просто хочу обновить свои поля.