Python Django-Tastypie-OneToOne关系帖子不';行不通
无论我做什么尝试,我总是会收到这个响应错误。这种方法似乎适用于多人关系,但在一人关系中却失败了。如果有人曾经遇到并解决过此问题,请提供帮助:Python Django-Tastypie-OneToOne关系帖子不';行不通,python,django,tastypie,Python,Django,Tastypie,无论我做什么尝试,我总是会收到这个响应错误。这种方法似乎适用于多人关系,但在一人关系中却失败了。如果有人曾经遇到并解决过此问题,请提供帮助: 400 BAD REQUEST {"error": "The 'order' field has no data and doesn't allow a default or null value."} 调试试用: curl -X "POST" "http://localhost:5000/core/api/v1/order/" \ -H "Co
400 BAD REQUEST
{"error": "The 'order' field has no data and doesn't allow a default or null value."}
调试试用:
curl -X "POST" "http://localhost:5000/core/api/v1/order/" \
-H "Content-Type: application/json" \
-d "{\"source\":\"W\",\"delivery_detail\":{\"email\":\"valery.flemister@yam.com\"}}"
class Order(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
created_at = models.DateTimeField(
verbose_name='created at',
auto_now_add=True
)
updated_at = models.DateTimeField(
verbose_name='updated at',
auto_now=True
)
SOURCE_TYPES = (
('I', 'iOS'),
('A', 'Android'),
('W', 'Web'),
('N', 'Not Applicable')
)
source = models.CharField(
verbose_name='order source',
max_length=1,
choices=SOURCE_TYPES,
default='N'
)
class DeliveryDetail(models.Model):
order = models.OneToOneField(
to=Order,
primary_key=True
)
email = models.EmailField(
verbose_name='email address',
max_length=255,
blank=True,
null=True
)
class OrderResource(ModelResource):
delivery_detail = fields.ToOneField(
to='core.api.v1_order.DeliveryDetailResource',
attribute='deliverydetail',
related_name='order',
help_text='Delivery details',
full=True
)
class Meta:
queryset = Order.objects.all()
resource_name = 'order'
class DeliveryDetailResource(ModelResource):
order = fields.ToOneField(
to=OrderResource,
attribute='order'
)
class Meta:
queryset = DeliveryDetail.objects.all()
resource_name = 'delivery_detail'
curl -X "POST" "http://localhost:5000/core/api/v1/order/" \
-H "Content-Type: application/json" \
-d "{\"source\":\"W\",\"delivery_detail\":{\"email\":\"valery.flemister@yam.com\"}}"
class Order(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
created_at = models.DateTimeField(
verbose_name='created at',
auto_now_add=True
)
updated_at = models.DateTimeField(
verbose_name='updated at',
auto_now=True
)
SOURCE_TYPES = (
('I', 'iOS'),
('A', 'Android'),
('W', 'Web'),
('N', 'Not Applicable')
)
source = models.CharField(
verbose_name='order source',
max_length=1,
choices=SOURCE_TYPES,
default='N'
)
class DeliveryDetail(models.Model):
order = models.OneToOneField(
to=Order,
primary_key=True
)
email = models.EmailField(
verbose_name='email address',
max_length=255,
blank=True,
null=True
)
class OrderResource(ModelResource):
delivery_detail = fields.ToOneField(
to='core.api.v1_order.DeliveryDetailResource',
attribute='deliverydetail',
related_name='order',
help_text='Delivery details',
full=True
)
class Meta:
queryset = Order.objects.all()
resource_name = 'order'
class DeliveryDetailResource(ModelResource):
order = fields.ToOneField(
to=OrderResource,
attribute='order'
)
class Meta:
queryset = DeliveryDetail.objects.all()
resource_name = 'delivery_detail'
型号:
curl -X "POST" "http://localhost:5000/core/api/v1/order/" \
-H "Content-Type: application/json" \
-d "{\"source\":\"W\",\"delivery_detail\":{\"email\":\"valery.flemister@yam.com\"}}"
class Order(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
created_at = models.DateTimeField(
verbose_name='created at',
auto_now_add=True
)
updated_at = models.DateTimeField(
verbose_name='updated at',
auto_now=True
)
SOURCE_TYPES = (
('I', 'iOS'),
('A', 'Android'),
('W', 'Web'),
('N', 'Not Applicable')
)
source = models.CharField(
verbose_name='order source',
max_length=1,
choices=SOURCE_TYPES,
default='N'
)
class DeliveryDetail(models.Model):
order = models.OneToOneField(
to=Order,
primary_key=True
)
email = models.EmailField(
verbose_name='email address',
max_length=255,
blank=True,
null=True
)
class OrderResource(ModelResource):
delivery_detail = fields.ToOneField(
to='core.api.v1_order.DeliveryDetailResource',
attribute='deliverydetail',
related_name='order',
help_text='Delivery details',
full=True
)
class Meta:
queryset = Order.objects.all()
resource_name = 'order'
class DeliveryDetailResource(ModelResource):
order = fields.ToOneField(
to=OrderResource,
attribute='order'
)
class Meta:
queryset = DeliveryDetail.objects.all()
resource_name = 'delivery_detail'
API:
curl -X "POST" "http://localhost:5000/core/api/v1/order/" \
-H "Content-Type: application/json" \
-d "{\"source\":\"W\",\"delivery_detail\":{\"email\":\"valery.flemister@yam.com\"}}"
class Order(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
created_at = models.DateTimeField(
verbose_name='created at',
auto_now_add=True
)
updated_at = models.DateTimeField(
verbose_name='updated at',
auto_now=True
)
SOURCE_TYPES = (
('I', 'iOS'),
('A', 'Android'),
('W', 'Web'),
('N', 'Not Applicable')
)
source = models.CharField(
verbose_name='order source',
max_length=1,
choices=SOURCE_TYPES,
default='N'
)
class DeliveryDetail(models.Model):
order = models.OneToOneField(
to=Order,
primary_key=True
)
email = models.EmailField(
verbose_name='email address',
max_length=255,
blank=True,
null=True
)
class OrderResource(ModelResource):
delivery_detail = fields.ToOneField(
to='core.api.v1_order.DeliveryDetailResource',
attribute='deliverydetail',
related_name='order',
help_text='Delivery details',
full=True
)
class Meta:
queryset = Order.objects.all()
resource_name = 'order'
class DeliveryDetailResource(ModelResource):
order = fields.ToOneField(
to=OrderResource,
attribute='order'
)
class Meta:
queryset = DeliveryDetail.objects.all()
resource_name = 'delivery_detail'
OneToOne字段不允许空值。因此,当时,您想要创建交货,但订单尚未创建,因此订单为空。可以先拆分订单请求,然后再进行交付,或者设置
ToOneField
属性null=True