为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕姐8265434 2023-11-09 15:39:49
我有一个简单的序列化程序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.datadata['id'] // return  for example 150 b = Serializer(data={})b.is_valid(data={})b_data = b.datab_data['id'] // return also 150为什么会这样?如何摆脱这个?
查看完整描述

2 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

你应该这样定义你的:default

default=lambda: random.randrange(100, 200)


查看完整回答
反对 回复 2023-11-09
?
千万里不及你

TA贡献1784条经验 获得超9个赞

因为序列化程序类中的默认 id 定义一次,它等于 150。 这就像写作

id = serializers.IntegerField(required=False, default=150)

如果您希望 id 是随机的,则应在创建 istance 时使用。random.randrange(100, 200)


查看完整回答
反对 回复 2023-11-09
  • 2 回答
  • 0 关注
  • 77 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信