Как получить список изменений в django, который фильтрует по полю, имеющему отношение? - PullRequest
0 голосов
/ 20 октября 2011

Предположим, у меня есть две модели:

class Blog(models.Model):
    pass

class Article(models.Model):
    blog = models.ForeignKey(Blog, related_name="articles")

Я хочу фильтровать только блоги, в которых есть статья. Фильтр будет примерно таким:

Blog.objects.annotate(article_count=models.Count('articles')).filter(article_count__gt=0)

Как мне получить список изменений в фильтре администратора следующим образом? Я попробовал несколько подходов, например, специальные фильтры, но безуспешно. Лучшим решением было использовать модель прокси и зарегистрировать отдельный список администраторов, как показано ниже:

Несколько ModelAdmin / представлений для одной и той же модели в Django admin

Но это не очень хорошо работает с системой разрешений. Есть идеи?

1 Ответ

0 голосов
/ 20 октября 2011

В настоящее время нет способа, кроме некоторых очень болезненных хаков, сделать это.Django 1.4 будет поставляться с возможностью создавать пользовательские спецификации фильтров (см .: https://code.djangoproject.com/ticket/5833),, что позволит вам делать подобные вещи.

Так как это выглядит как крайний случай (действительно, какмного блогов когда-либо будут иметь нулевые посты в течение значительного периода времени?) Я бы посоветовал просто подождать пока, и, возможно, заглянуть в обновление после выпуска 1.4.

Если вы настаиваете на том, чтобы спустить кроликадыра, вы можете начать здесь: Пользовательский фильтр в Django Admin на Django 1.3 или ниже

...