Django 使用Tastypie发布关系数据时出错
我有这两种型号:Django 使用Tastypie发布关系数据时出错,django,django-models,tastypie,Django,Django Models,Tastypie,我有这两种型号: class Order(models.Model): shop = ForeignKey(Shop) date_modified = DateTimeField(auto_now=True) class Meta: db_table = 't_order' class Transaction(models.Model): order = ForeignKey('Order') quantity = IntegerFie
class Order(models.Model):
shop = ForeignKey(Shop)
date_modified = DateTimeField(auto_now=True)
class Meta:
db_table = 't_order'
class Transaction(models.Model):
order = ForeignKey('Order')
quantity = IntegerField()
item = ForeignKey(Item)
date_modified = DateTimeField(auto_now=True)
class Meta:
db_table = 't_transaction'
和两个资源:
class OrderResource(ModelResource):
shop = fields.ToOneField(ShopResource, 'shop')
transactions = fields.ToManyField('TransactionResource','transaction_set', full=True)
class Meta:
queryset = Order.objects.all()
resource_name = 'order'
authentication = Authentication()
authorization = Authorization()
allowed_methods = ['post', 'get']
class TransactionResource(ModelResource):
order = fields.ToOneField('OrderResource', 'order')
item = fields.ToOneField('ItemResource', 'item')
class Meta:
queryset = Transaction.objects.all()
resource_name = 'transaction'
authentication = Authentication()
authorization = Authorization()
allowed_methods = ['post', 'get']
我正在将此数据发布到
http://127.0.0.1:5000/api/order/
:
我遇到以下错误:
"error_message": "Transaction has no order.",
如果我删除
order = fields.ToOneField('OrderResource', 'order')
我从TransactionResource获得的行:
"error_message": "(1048, "Column 'order_id' cannot be null")",
我哪里错了?在事务到任何字段定义中缺少相关的\u name属性。 而不是:
transactions = fields.ToManyField('ttests.api.TransactionResource','transaction_set', full=True)
你应使用:
transactions = fields.ToManyField('ttests.api.TransactionResource','transaction_set', full=True, related_name='order')
然后,当您发布交易时,tastypie将不希望您在交易中提供订单。现在我收到了“错误消息”:(1048,“列'order\u id'不能为空”)“againI add order=fields.ToOneField('OrderResource','order'),现在可以了。
transactions = fields.ToManyField('ttests.api.TransactionResource','transaction_set', full=True, related_name='order')