Django Admin, используйте list_filter, основанный на поле foreing key
В приложении есть 3 класса в model.py, и было создано вычисляемое поле.
class Category(models.Model):
name = models.CharField(max_length=255)
class Asset(models.Model):
category = models.ForeignKey(Category, related_name='categories', on_delete=models.CASCADE)
class PortfolioAsset(models.Model):
asset = models.ForeignKey(Asset, on_delete=models.CASCADE)
@property
def category(self):
return self.asset.category
Я пытался добавить в admin.py фильтр list_filter:
class PortfolioAssetAdmin(admin.ModelAdmin):
list_display =('asset', 'category' )
list_filter =(('category', RelatedFieldListFilter),)
но я получаю сообщение об ошибке:
"PortfolioAsset has no field named category"
Я думаю, что это из-за того, что категория в PortfolioAsset вычисляется, но не знаю, как это решить. Или есть ли какое-нибудь лучшее и работающее решение. Спасибо
Попробуйте asset__category. Модель PortfolioAsset не имеет поля с именем category, о чем говорит ошибка. Она имеет внешний ключ к модели Asset, и именно эта модель имеет поле category.