Skip to main content
2 of 2
added 152 characters in body
Oleg Belousov
  • 10.1k
  • 14
  • 74
  • 128

UPDATE 15.3.2017:

I have opened a Django-issue on this and it seems to be preliminary accepted here: https://code.djangoproject.com/ticket/27825

My experience is that when using the Constructor (ORM) class by references with Django 1.10.5 there might be some inconsistencies in the data (i.e. the attributes of the created object may get the type of the input data instead of the casted type of the ORM object property) example:

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 
Oleg Belousov
  • 10.1k
  • 14
  • 74
  • 128