Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将序列化程序中的默认字段设置为与同一序列化程序中的其他字段相同?_Python_Django_Django Models_Django Rest Framework_Django Serializer - Fatal编程技术网

Python 如何将序列化程序中的默认字段设置为与同一序列化程序中的其他字段相同?

Python 如何将序列化程序中的默认字段设置为与同一序列化程序中的其他字段相同?,python,django,django-models,django-rest-framework,django-serializer,Python,Django,Django Models,Django Rest Framework,Django Serializer,我有一个像这样的序列化程序 class SomeSerializer(serializers.Serializer): id = serializers.UUIDField(required=False, default=uuid.uuid4) anotherId = serializers.UUIDField(required=False, default = ????) 我想在默认情况下将字段“anotherId”设置为与“id”相同 这就是我所期望的 s = SomeSeri

我有一个像这样的序列化程序

class SomeSerializer(serializers.Serializer):
   id = serializers.UUIDField(required=False, default=uuid.uuid4)
   anotherId = serializers.UUIDField(required=False, default = ????)
我想在默认情况下将字段“anotherId”设置为与“id”相同

这就是我所期望的

s = SomeSerializer(data={}).
data = s.data
data.id # return '56e34c58-be7d-4c7c-992a-43080faf5614'
data.anotherId #  return '56e34c58-be7d-4c7c-992a-43080faf5614' (as id)
我试着在这里这样做,但没有成功

class SomeSerializer(serializers.Serializer):
       id = serializers.UUIDField(required=False, default=uuid.uuid4)
       anotherId = serializers.UUIDField(required=False, default = id.get_default())

如何做到这一点?

如果要在模型上保存这些ID,则可以使用
ModelSerializer
pre_save
实现:

#serializers.py
类SomeSerializer(serializers.Model):
id=serializers.UUIDField(必需=False,默认=uuid.uuid4)
另一个_id=serializers.UUIDField(必需=False)
类元
model=MyModel
#models.py
从django.db.models.signals导入预保存
...
@接收方(预保存,发送方=MyModel)
def set_default_另一个_id(发送方,实例,**kwargs):
如果不是实例。另一个\u id:
instance.other_id=instance.id
您可以使用以下方法:

class SomeSerializer(serializers.Model):
id=serializers.UUIDField(必需=False,默认=uuid.uuid4)
另一个_id=serializers.UUIDField(必需=False)
def到_表示(自身、实例):
data=super().到_表示(实例)
如果不是data.get('other_id',None):
数据['other_id']=数据['id']
返回数据

我不打算将其保存在模型中。此序列化程序仅用于映射请求数据。我希望字段“id”和“anotherId”使用相同的值生成,除非客户端另有指定。