django-tastypie - Как сделать множество отношений через отношения - PullRequest
7 голосов
/ 08 февраля 2012

Я работаю над API для проекта, и у меня есть отношения Order / Products через OrderProducts, например:

В каталоге / 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'

, который выдает мне это сообщение об ошибке: «Объект« Product »не имеет атрибута« order »». Так что я не уверен, что не так или отсутствует, возможно, что-то требуется и в моем ресурсе Product, но я пробовал несколько способов безуспешно. Любая помощь будет приветствоваться:)

1 Ответ

2 голосов
/ 08 февраля 2012

Проблема с этой строкой:

order = fields.ToOneField(OrderResource, 'order')

Ошибка довольно проста.Product действительно не имеет атрибута с именем order.Ваша таблица соединения OrderProduct делает, но ваш M2M не возвращает OrderProduct s, он возвращает Product s.

...