【发布时间】:2013-12-30 21:52:52
【问题描述】:
我的 Django 应用中有以下模型,其中 Order 与 Cart 相关,cartItem 与 相关>购物车和产品。现在在我的tastepie api中,当我获得订单时,我还想获得与订单购物车相关的所有产品。
class Order(models.Model):
objects = OrderManager()
order_number = models.CharField(max_length=20, editable=False,unique=True,
default=get_unique_order_number)
user = models.ForeignKey(User, blank=True, null=True)
cart = models.ForeignKey(Cart, blank=True, null=True)
...
class Cart(models.Model):
user = models.ForeignKey(User)
is_check_out = models.BooleanField(default=False)
...
class CartItem(models.Model):
objects = CartItemManager()
cart = models.ForeignKey(Cart)
product = models.ForeignKey(Product)
...
class CartRelatedResource(ModelResource):
class Meta:
queryset = Cart.objects.all()
allowed_methods = ['get']
excludes = ['is_check_out', 'session', 'creation_date', 'modification_date']
include_resource_uri = False
authentication = SessionAuthentication()
class OrderResource(ModelResource):
cart = fields.ForeignKey(CartRelatedResource, 'cart',full=True)
class Meta:
queryset = Order.objects.all()
resource_name = 'order'
fields = ['cart_id','delivery_time','shipping_address_id','billing_address_id',
'tip','phone','delivery_instructions']
include_resource_uri = False
allowed_methods = ['post','get']
authentication = SessionAuthentication()
authorization = OrderAuthorization()
我不认为在这种情况下使用 ToManyField 会起作用。会吗?实现我想要的最好方法是什么?
【问题讨论】:
-
也许在
CartRelatedResource中,您可以定义这样的字段:orders = fields.ToManyField(OrderResource, 'cart__order_set', related_name='cart')我不是一个好吃的家伙,所以不确定它是否会起作用.. -
@mariodev 这不起作用,因为 OrderResource 在 CartRelatedResource 之后
-
然后尝试使用带有完整路径的字符串表示法。
-
@mariodev 我得到 {"error": "模型 '
' 有一个空属性 'order_set' 并且不允许一个空值。"}