django-modelcluster icon indicating copy to clipboard operation
django-modelcluster copied to clipboard

<Foo object at ...> is not JSON serializable

Open thenewguy opened this issue 10 years ago • 1 comments

Model cluster does not support primary keys that are not of simple types.

If you have a primary key that uses something like this CashField from django's tests that doesn't inherit from one of the basic types known to the DjangoJSONEncoder then you get <Foo object at ...> is not JSON serializable.

The Cash object I linked to inherits from decimal.Decimal but that is because it is only a simple example for testing.

ModelCluster needs to do some sort of is_serializable check at https://github.com/torchbox/django-modelcluster/blob/c72110e7789415196336584c70b2706fe74dbc2d/modelcluster/models.py#L44 and use Field.value_to_string or the like if the object isn't serializable

thenewguy avatar Sep 29 '15 15:09 thenewguy

I just submitted a pull request. All tests pass for me locally. This issue isn't just for primary keys. That is just what I ran into first. It would be for any field that returns a value that cannot be directly converted to json. Not sure how you would want to test it. I can put together a quick test if you want with a custom field like the CashField in the django tests if you like

thenewguy avatar Sep 29 '15 16:09 thenewguy