Допустим, у меня есть трехуровневая модель, как показано ниже, где сообщения находятся в категориях, а затем в категориях. Мне бы хотелось, чтобы на панели «Администраторы» отображалась страница «Сообщения» с указанием подкатегории и категории, к которой относится каждое сообщение. И в идеале позвольте мне фильтровать оба. Пока что я могу заставить только панель администратора работать на одном уровне отношений. Поэтому я могу отображать и фильтровать по подкатегории, но когда я добавляю категорию, я получаю сообщение об ошибке.
models.py:
class Category(models.Model):
name=models.CharField(max_length=10)
def __str__(self):
return self.name
class Subcategory(models.Model):
category=models.ForeignKey(Category,on_delete=models.CASCADE,null=True)
name=models.CharField(max_length=10)
def __str__(self):
return self.name
class Posts(models.Model):
title=models.CharField(max_length=15)
sub_category=models.ForeignKey(Subcategory,on_delete=models.CASCADE,null=True)
def __str__(self):
return self.title
Admin.py:
class PostsAdmin(admin.ModelAdmin):
ordering = ('name',)
list_display = ('name','id','sub_category', 'sub_category__category.name', )
exclude = ('sort',)
list_filter = ['sub_category','sub_category__category']
search_fields = ['name']
admin.site.register(Posts, PostsAdmin)
Ошибка примерно такая:
<class 'journal.admin.PostsAdmin'>: (admin.E108) The value of 'list_display[4]' refers to 'sub_category__category', which is not a callable, an attribute of 'PostsAdmin', or an attribute or method on 'journal.Admin'.