为什么 django rest 序列化程序中的 random 总是返回相同的字段?

我有一个简单的序列化程序


class Serializer(serializers.Serializer):

    name = serializers.CharField(required=False, default='someName')

    id = serializers.IntegerField(required=False, default=random.randrange(100, 200))

当我创建序列化程序的多个实例时,它总是返回相同的字段


a = Serializer(data={})

a.is_valid(data={})

data = a.data

data['id'] // return  for example 150

 

b = Serializer(data={})

b.is_valid(data={})

b_data = b.data

b_data['id'] // return also 150

为什么会这样?如何摆脱这个?


慕姐8265434
浏览 87回答 2
2回答

汪汪一只猫

你应该这样定义你的:defaultdefault=lambda: random.randrange(100, 200)

千万里不及你

因为序列化程序类中的默认 id 定义一次,它等于 150。 这就像写作id = serializers.IntegerField(required=False, default=150)如果您希望 id 是随机的,则应在创建 istance 时使用。random.randrange(100, 200)
打开App,查看更多内容
随时随地看视频慕课网APP