agateblue / django-dynamic-preferences

Dynamic global and instance settings for your django project
https://django-dynamic-preferences.readthedocs.org/
BSD 3-Clause "New" or "Revised" License
350 stars 87 forks source link

FloatPreference should be able to be initialized from both floats and ints #265

Open CharlesB2 opened 2 years ago

CharlesB2 commented 2 years ago

Recently I met a problem with setting a FloatPrefeerence to an int value instead of its float equivalent (1 instead of 1.0), which sounds reasonable, but I got this error:

  File "/app/.venv/lib/python3.10/site-packages/dynamic_preferences/models.py", line 53, in set_value
    self.raw_value = self.preference.serializer.serialize(value)
  File "/app/.venv/lib/python3.10/site-packages/dynamic_preferences/serializers.py", line 39, in serialize
    return cls.to_db(value, **kwargs)
  File "/app/.venv/lib/python3.10/site-packages/dynamic_preferences/serializers.py", line 54, in to_db
    return text_type(cls.clean_to_db_value(value))
  File "/app/.venv/lib/python3.10/site-packages/dynamic_preferences/serializers.py", line 163, in clean_to_db_value
    raise cls.exception('FloatSerializer can only serialize Float instances')

FloatSerializer should INMHO accept ints as well, for more flexibility in user input