У меня есть две модели продукта и CartItem:Джанго TastyPie ForeignKey полный = правда не работает
#product models.py
class Product(models.Model):
objects = ProductManger()
name = models.CharField(max_length=200)
brand_name = models.CharField(max_length=100)
description = models.TextField()
#CartItem models.py
class CartItem(models.Model):
objects = CartItemManager()
cart = models.ForeignKey(Cart)
product = models.ForeignKey(Product)
quantity = models.PositiveSmallIntegerField(blank=True, null=True, default=1)
Я хочу, чтобы все cartitems за тележкой, для этого в api.py (tastypie) У меня есть следующие:
class CartItemRelatedResource(ModelResource):
class Meta:
queryset = Product.objects.all()
resource_name = 'item_product'
allowed_methods = ['get']
include_resource_uri = False
authentication = SessionAuthentication()
class CartItemResource(ModelResource):
product = fields.ForeignKey(CartItemRelatedResource, 'product', full=True)
class Meta:
queryset = CartItem.objects.all()
resource_name = 'cart_item'
excludes = ['modification_date']
allowed_methods = ['post', 'get', 'delete']
authentication = SessionAuthentication()
def get_cart_items(self, request, **kwargs):
self.method_check(request, allowed=['get'])
self.is_authenticated(request)
cart_id = request.GET.get('id', '')
items = CartItem.objects.filter(cart__exact = cart_id)
data = serializers.serialize('json', items)
return HttpResponse(data, mimetype='application/json')
Но когда я get_cart_items, реакция имеет рк продукта, он не имеет название продукта или описание. Я также хочу получить имя продукта в ответе. Из того, что я прочитал, full = true - лучшее решение (с минимальными запросами, потому что тележка может иметь несколько элементов корзины).
спасибо за ваш ответ. Должен ли я использовать 'def obj_get_list (self, bundle, ** kwargs): cart_id = request.GET.get ('cart_id') ...' – reevh
Я не совсем понимаю, что вы пытаетесь сделать, но в в общем случае вам вообще не нужно писать какой-либо код, просто используйте URL-адрес tashypie по умолчанию. – dragonx
Я хотел был бы иметь url как/api/cart_item/cart /? Id = 1 против/api/cart_item/cart /? Cart__id = id. Я попробую с более поздним, и если это сработает, мы ответим на ваш ответ. Спасибо за вашу помощь. Я новичок в django-tastypie :) – reevh