【发布时间】:2014-02-16 02:55:54
【问题描述】:
我按照这个网站上的一些问题在 Django 管理中添加了一个基于模型方法的新列。它工作得很好。但是,我无法按列排序。有没有办法在没有物理模型字段可引用的模型方法字段上完成排序?
例如,一种方法查找与另一个模型的外键关系并返回字符串。它们可以按字母顺序排序。另一个示例根据是否存在终止日期来检查模型是否处于活动状态。 (显然我可以很容易地在模型中添加一个boolean 字段,但我想知道这是否可以通过仅使用方法来完成)。有没有办法对这些“列”进行排序?
更新:这是一个非 rel 后端 (mongo),因此外键查找本身无法工作。
例如
class mymodel(models.Model):
user = models.ForeignKey(User)
termination_date = models.DateTimeField(blank=True, null=True)
# Useful admin view methods
# Returns whether the model is currently active.
def is_active(self):
if self.termination_date:
return False
else:
return True
is_active.boolean = True
is_active.admin_order_field = 'termination_date' #<--- This activates sort, but not on the boolean, it sorts on the Model Field termination_date.
# Returns the username from foreign key relationship
def get_username(self):
return User.objects.get(pk=self.user_id).username
get_username.short_description = 'user'
【问题讨论】:
-
你能做到
MyModel.objects.all().order_by('user__username')吗?我的意思是,暂时忘记管理站点,您可以根据相关用户名使用非相关 ORM(不是 python)订购 QuerySet 对象吗?
标签: python django sorting django-admin django-mongodb-engine