Search code examples
pythondjangodjango-modelsdjango-rest-frameworkdjango-serializer

Why does random in django rest serializer always return the same field?


I have a simple serializer

class Serializer(serializers.Serializer):
    name = serializers.CharField(required=False, default='someName')
    id = serializers.IntegerField(required=False, default=random.randrange(100, 200))

And when I create multiple instances of the serializer it always returns the same field

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

Why it happens? How to get rid of this?


Solution

  • You should define your default like this instead:

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