Tastypie Resource post request not completing successfully
Я пытаюсь создать tastypie resurce для размещения часового пояса и валюты в таблице DB. Я получаю следующий ответ об ошибке:
error: "The 'timezone' field has no data and doesn't allow a default or null value."
Мои модели Django:
class Currency(models.Model):
currency = models.CharField(max_length=200)
iso = models.CharField(max_length=3, unique=True)
created = models.DateTimeField(auto_now=True, db_index=True)
updated = models.DateTimeField(auto_now=True, db_index=True)
active = models.BooleanField(db_index=True, default=False)
class Meta:
db_table = 'currency'
class Timezone(models.Model):
timezone = models.CharField(max_length=200, unique=True)
display_name = models.CharField(max_length=200)
offset = models.DecimalField(max_digits=8, decimal_places=4)
created = models.DateTimeField(auto_now=True, db_index=True)
updated = models.DateTimeField(auto_now=True, db_index=True)
class Meta:
db_table = 'timezone'
class Account(models.Model):
timezone = models.ForeignKey(Timezone, on_delete=models.PROTECT)
currency = models.ForeignKey(Currency, on_delete=models.PROTECT)
country_code = models.CharField(default=120)
created = models.DateTimeField(auto_now=True, db_index=True)
updated = models.DateTimeField(auto_now=True, db_index=True)
class Meta:
db_table = 'account'
А вот мои ресурсы Tastypie:
lass TimezoneResource(ModelResource):
class Meta(CommonMeta):
queryset = Timezone.objects.all()
resource_name = 'timezone'
allowed_methods = ['get', 'post', 'put', 'patch', 'delete']
excludes = ['created', 'updated']
filtering = {
'timezone':ALL,
}
class CurrencyResource(ModelResource):
class Meta(CommonMeta):
queryset = Currency.objects.all()
resource_name = 'currency'
allowed_methods = ['get', 'post', 'put', 'patch', 'delete']
excludes = ['created', 'updated']
filtering = {
'currency':ALL,
}
class ManageTimezoneAndCurrency(ModelResource):
timezone = fields.ForeignKey(TimezoneResource, 'timezone', full=True)
currency = fields.ForeignKey(CurrencyResource, 'currency', full=True)
class Meta(CommonMeta):
queryset = Account.objects.all()
always_return_data = True
resource_name = 'manage-timezone-currency'
allowed_methods = ['get', 'post', 'put', 'patch', 'delete']
excludes = ['created', 'updated']
filtering = {
'timezone': ALL,
'currency': ALL,
}
А вот как я делаю запрос, используя React Axios:
const timezoneAndCurrencyRequest = {
method: 'POST',
url: generateUrl('config', 'manage-timezone-currency'),
data: {
timezone_id: this.state.timezoneId,
currency_id: this.state.currencyId,
},
withCredentials: true,
headers: {
'Content-Type': 'application/json',
},
};
const timezoneAndCurrencyResponse = await Axios(timezoneAndCurrencyRequest);
if (timezoneAndCurrencyResponse.status !== 201) {
throw new Error('Status not 201');
}
Когда я делаю запрос на почту, я получаю ответ с ошибкой, я не знаю, может я что-то упускаю при создании запроса.
Любое руководство было бы замечательно.