mixer icon indicating copy to clipboard operation
mixer copied to clipboard

'ArrayField' has no attribute '_meta'

Open robrichter opened this issue 4 years ago • 3 comments

I have django model with Postgres specific field type ArrayField

class Dataset(behaviors.CreatedEdited):
    fields = ArrayField(models.CharField(max_length=31), null=True)

When calling mixer.blend(Dataset) it fails: FAILED dmx_server/apps/vydej/tests/test_orders.py::test_order - AttributeError: Mixer (<class 'dmx_server.apps.vydej.models.Publishset'>): type object 'ArrayField' has no attribute '_meta'

Error can be avoided by adding parameter on creation mixer.blend(Dataset, fields=["aaa", "bbb"])

But I have more complicated use case where ArrayField is used in through model. When I set mixer.register(PublishsetsDataset, fields=None) I evade problem with ArrayField but creation fails anyway.

robrichter avatar Nov 12 '21 06:11 robrichter

I have the same issue with Django models.JSONField.

nvo87 avatar Jan 31 '22 11:01 nvo87

I have the same issue with models.UUIDField in Django 3.0.

For some reason it doesn't complain if the id field is a UUIDField, but if I add any others, it blows up.

I think this SO is also about the same problem: https://stackoverflow.com/questions/43848109/geodjango-and-mixer-pointfield-has-no-attribute-meta

odigity avatar Mar 18 '22 15:03 odigity

Just searched the code. Seems UUIDField is part of a list of supported types in the Mongo backend:

https://github.com/klen/mixer/blob/develop/mixer/backend/mongoengine.py#L119

But not the Django backend:

https://github.com/klen/mixer/blob/develop/mixer/backend/django.py#L82

Can this be easily fixed? It's a real ongoing problem, given that UUIDField is not only a standard Django field but also very popular and useful.

odigity avatar Mar 18 '22 16:03 odigity