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