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.

Вернуться на верх