У меня есть следующая ситуация. Существует модель для проекта и одна для изображения проекта.фильтр от ForeignKey в django admin
class Project(models.Model):
name = models.CharField(max_length=300)
... #some more fields
class ProjectImage(models.Model):
image = models.ImageField(upload_to = "uploads/")
projekt = models.ForeignKey(Projekt)
Теперь, я хотел бы быть пользователем админки, чтобы отфильтровать все проекты в области администрирования, которые не имеют никакого изображения.
У меня уже есть значок в обзоре, который является зеленым или красным, если у него есть прикрепленное изображение или нет. Он работает с пользовательской функцией администратора модели (это может быть не самое быстрое решение, но работает нормально).
class ProjectAdmin(admin.ModelAdmin):
def image(self, obj):
img = "no"
images = ProjectImage.objects.only('id',).filter(project=obj)
if images:
img = "yes"
return "<img src='"+ADMIN_MEDIA_PREFIX+"img/admin/icon-"+img+".gif' />"
list_display = ('name', 'bild')
Но AFAIK я не могу использовать подобный метод просто возвращает логическое значение и передать его в качестве пользовательского фильтра.
Я также видел это: http://twigstechtips.blogspot.ch/2010/10/django-create-custom-admin-model-filter.html Но похоже, что пользовательский фильтр должен быть прикреплен к полю модели, и у меня нет поля изображения в проектах.
У меня есть другой способ сделать это? thx
возможно это поможет: https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_filter – marianobianchi