我有一些课程
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
,它不起作用。
答案 0 :(得分:1)
您可以尝试指定product__id
根据id
的{{1}}执行排序。
product
在视图集中指定orderby = product__id
。
ordering_fields
答案 1 :(得分:1)
当你使用django-rest-framework时,你必须使用ordering_fields
,你可以从文档here中看到。希望它有助于示例:
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')
如果在视图上设置了排序属性,则将其用作默认排序。
通常,您可以通过在初始查询集上设置order_by
来控制此操作,但是使用视图上的排序参数可以指定顺序,然后可以将其作为上下文自动传递给a渲染模板