mirror of
https://github.com/SectorLabs/django-localized-fields.git
synced 2025-04-24 19:32:53 +03:00
Merge pull request #78 from SectorLabs/default-values-callables
Accept callables as values in fields
This commit is contained in:
commit
701114c20e
@ -105,7 +105,7 @@ class LocalizedIntegerField(LocalizedField):
|
||||
|
||||
@staticmethod
|
||||
def _convert_localized_value(
|
||||
value: LocalizedValue
|
||||
value: LocalizedValue,
|
||||
) -> LocalizedIntegerValue:
|
||||
"""Converts from :see:LocalizedValue to :see:LocalizedIntegerValue."""
|
||||
|
||||
|
@ -90,6 +90,9 @@ class LocalizedValue(dict):
|
||||
for lang_code, _ in settings.LANGUAGES:
|
||||
self.set(lang_code, self.default_value)
|
||||
|
||||
if callable(value):
|
||||
value = value()
|
||||
|
||||
if isinstance(value, str):
|
||||
self.set(settings.LANGUAGE_CODE, value)
|
||||
|
||||
|
@ -197,6 +197,17 @@ class LocalizedIntegerFieldTestCase(TestCase):
|
||||
obj.refresh_from_db()
|
||||
assert obj.score.get(settings.LANGUAGE_CODE) == 75
|
||||
|
||||
def test_callable_default_value(self):
|
||||
output = {"en": 5}
|
||||
|
||||
def func():
|
||||
return output
|
||||
|
||||
model = get_fake_model({"test": LocalizedIntegerField(default=func)})
|
||||
obj = model.objects.create()
|
||||
|
||||
assert obj.test["en"] == output["en"]
|
||||
|
||||
def test_order_by(self):
|
||||
"""Tests whether ordering by a :see:LocalizedIntegerField key works
|
||||
expected."""
|
||||
|
Loading…
x
Reference in New Issue
Block a user