2015-08-28 5 views
1

У меня есть некоторые классыКак заказать поля вложенных объектов?

class MarketProduct(models.Model, ObjectMarket): 
    _state_class = 'MarketProductState' 

    uuid = models.UUIDField(u'Код', 
         default=uuid.uuid4, editable=False) 
    name = models.CharField(u'Название', 
         max_length=255, db_index=True) 
class MarketItem(models.Model, ObjectMarket): 
    _state_class = 'MarketItemState' 

    STOCK, AUCTION = 1, 2 
    ITEM_CHOICES = (
     (STOCK, u'Сток'), 
     (AUCTION, u'Аукцион'), 
    ) 

    product = models.ForeignKey(MarketProduct) 
    start_at = models.DateTimeField(u'Начало продажи') 

Я хочу, чтобы получить MarketItemViewSet и использовать

filter_backends = (filters.OrderingFilter,`) 

Я посылаю запрос с поданной orderby на угловой. Если я пришлю orderby = start_at, все это хорошо, но я хочу отправить orderby = product.id, это не сработает.

ответ

1

Как вы используете Джанго-Rest-рамку, вы должны использовать ordering_fields, как вы можете видеть из документации here .HOpe помогает примеру:

class UserListView(generics.ListAPIView): 
    queryset = User.objects.all() 
    serializer_class = UserSerializer 
    filter_backends = (filters.OrderingFilter,) 
    ordering_fields = ('username', 'email') 
    ordering = ('created_on') # for reverse ordering = ('-created_on') 

Если атрибут заказа устанавливаются на view, это будет использоваться как порядок по умолчанию.

Обычно вы бы вместо того, чтобы управлять этим, установив order_by на начальном QuerySet, но с помощью параметра упорядочения на виде позволяет указать порядок таким образом, что он может быть принят автоматически в качестве контекста для тонированного шаблона

+0

благодаря ordering_fields = (" poduct__id ") и отправить OrderBy: product__id –

+0

@AndrewMedvedsky рад help.Please принять ответ, если это помогло , – Aameer

1

Для того, чтобы сделать заказ, исходя из кода id из product, вы можете указать: product__id.

orderby = product__id 

Укажите ordering_fields в вашем окне.

ordering_fields = ('product__id',) 
+0

он не работает ( –

+0

ли вы указали заказ поля как 'product__id' –

Смежные вопросы