7
我工作的一个API的一个项目让多对多和我有关系订单/产品通过OrderProducts这样的:Django的tastypie - 如何通过关系
在目录/ models.py
class Product(models.Model):
...
为了/ models.py
class Order(models.Model):
products = models.ManyToManyField(Product, verbose_name='Products', through='OrderProducts')
...
class OrderProducts(models.Model):
order = models.ForeignKey(Order)
product = models.ForeignKey(Product)
...
现在,当我通过API加载顺序我想获得相关产品为好,所以我想这(与Django的tastypie):
为了/ api.py
class OrderResource(ModelResource):
products = fields.ToManyField('order.api.OrderProductsResource', products, full=True)
class Meta:
queryset = Order.objects.all()
resource_name = 'order'
class OrderProductsRessource(ModelResource):
order = fields.ToOneField(OrderResource, 'order')
class Meta:
queryset = OrderProducts.objects.all()
resource_name = 'order/products'
它给我这个错误信息: “ '产品' 对象有没有属性 '秩序'”。所以我不确定有什么问题或缺失,它可能需要我的产品资源中的东西,但我尝试了几种方法,但没有成功。任何帮助将受到欢迎:)
我可能仍然错过了一些东西,但我没有看到ToOneField应该使用什么字段,或者M2M应该返回什么字段? – djevg 2012-02-08 16:32:24
您需要'ProductResource'而不是'OrderProductResource'。那是你的问题。就像在模型上设置M2M一样。你不要'models.ManyToManyField(OrderProduct)';你做'models.ManyToManyField(Product)'。在这里也是一样的,你创建你的'ToManyField'并且链接到返回Product的'ProductResource'。 – 2012-02-08 16:36:09
好吧,明白了;)由于某些原因,我认为我必须重新定义API中的整个关系,但它比这更聪明...感谢您的帮助。 – djevg 2012-02-08 16:53:57