Я ответил на некоторые вопросы на этом сайте, чтобы добавить новый столбец в администраторе Django на основе метода модели. Это прекрасно работает. Однако я не могу сортировать по столбцу. Есть ли способ выполнить сортировку в поле метода модели, где нет поля физической модели для ссылки?
Например, один метод ищет отношение внешнего ключа к другой модели и возвращает строки. Их можно было отсортировать по алфавиту. Другой пример проверяет, активна ли модель, основываясь на том, есть ли дата завершения или нет. (Очевидно, что я могу легко добавить поле boolean
в модель, но я хочу знать, можно ли это сделать, просто используя вместо этого методы). Есть ли способ включить сортировку по этим «столбцам»?
Обновление: это бэкэнд, не относящийся к rel (mongo), поэтому поиск по внешнему ключу изначально не работает.
Ex.
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')
? Я имею в виду, забудьте на секунду сайт администратора, можете ли вы заказать объект QuerySet в соответствии с соответствующим именем пользователя, используя не-rel ORM (не python)? - person yuvi   schedule 16.02.2014