Django对m2m字段的剩余订购

时间:2018-08-09 13:38:52

标签: django django-rest-framework django-filters

class Level(models.Model):
    name = models.CharField(max_length=100)

   class Position(models.Model):
        name = models.CharField(max_length=100)

   class PositionLevel(models.Model):
        user = models.ForeignKey(settings.AUTH_USER_MODEL,
                                 related_name="position_levels")
        position = models.ForeignKey(Position)
        level = models.ForeignKey(Level)
        created_on = models.DateTimeField(auto_now_add=True)

我有一个可以具有多个position_levels的用户。 我正在按每个字段在Django rest中进行过滤和排序。 我的问题是我无法从position_levels__position__name

订购最后一个职位名称
queryset = get_user_model().objects.filter(
        account_type=models.User.ACCOUNT_TYPE_CHOICES[0][0]).\
        annotate(
  

last_position = F('position_levels__position__name')

last_position的值是position_levels中3个值中的第一个。如何用注释position_levels__create_on来排序,以带最后一个日期作为对象。

我的目的是在URL排序中使用该值:

  

localhost:8000 / api / users?ordering = -last_position

并根据用户的位置或级别对其进行排序。

我尝试在用户模型中添加属性,但是从url订购失败。我尝试使用queryset进行操作,但是在每种情况下都避免使用该字段。我尝试使用SQLraw,但也无法正常工作。

我正在使用Django 1.10.8

0 个答案:

没有答案