UPDATE 2017/03/15:
Ho aperto un Django-problema su questo e sembra essere preliminare accettati qui: https://code.djangoproject.com/ticket/27825
mia esperienza è che quando si utilizza il Constructor
(ORM
) class per riferimenti con Django 1.10.5
potrebbero esserci alcune incongruenze nei dati (cioè gli attributi dell'oggetto creato potrebbero ottenere il tipo dei dati di input invece del tipo casted della proprietà dell'oggetto ORM) Esempio :
models
class Payment(models.Model):
amount_cash = models.DecimalField()
some_test.py
- object.create
Class SomeTestCase:
def generate_orm_obj(self, _constructor, base_data=None, modifiers=None):
objs = []
if not base_data:
base_data = {'amount_case': 123.00}
for modifier in modifiers:
actual_data = deepcopy(base_data)
actual_data.update(modifier)
# Hacky fix,
_obj = _constructor.objects.create(**actual_data)
print(type(_obj.amount_cash)) # Decimal
assert created
objs.append(_obj)
return objs
some_test.py
- Constructor()
Class SomeTestCase:
def generate_orm_obj(self, _constructor, base_data=None, modifiers=None):
objs = []
if not base_data:
base_data = {'amount_case': 123.00}
for modifier in modifiers:
actual_data = deepcopy(base_data)
actual_data.update(modifier)
# Hacky fix,
_obj = _constructor(**actual_data)
print(type(_obj.amount_cash)) # Float
assert created
objs.append(_obj)
return objs
fonte
2017-02-09 15:46:47
Sì, è la differenza. –