I am having the following custom user model trying to use the Django 1.5 AbstractBaseUser:
class Merchant(AbstractBaseUser):
email = models.EmailField()
company_name = models.CharField(max_length=256)
website = models.URLField()
description = models.TextField(blank=True)
api_key = models.CharField(blank=True, max_length=256, primary_key=True)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['email','website']
class Meta:
verbose_name = _('Merchant')
verbose_name_plural = _('Merchants')
def __unicode__(self):
return self.company_name
The model works perfectly and database is as expected, but the problem is when I try to dumpdata to create fixtures for my tests.
python manage.py dumpdata --natural --exclude=contenttypes --exclude=auth.permission --indent=4 > fixtures/initial_data.json
Then I get the error:
CommandError: Unable to serialize database: <Merchant: Test Shop> is not JSON serializable
Do you have ideas what could be the reason for this. Could it be the charfield primary key or something with the abstractbaseuser model?
Thanks
After some time spend I found the problem. Actually it was not in Merchant model but in Product that has foreign key to Merchant:
the natural_key method in the model returned self.merchant instead of self.merchant_id so it was trying to serialize the whole merchant object to create a natural key. After switching the natural_key method to the following one the problem was fixed: