#store/admin.py
@admin.register(models.Product)
class ProductView(admin.ModelAdmin):
list_display = ['title', 'unit_price', 'inventory_status', 'collection_title',]
list_editable = ['unit_price']
list_per_page = 10
list_select_related = ['collection']
#store/models.py
class Collection(models.Model):
title = models.CharField(max_length=255)
featured_product = models.ForeignKey(
'Product', on_delete=models.SET_NULL, null=True, related_name=' ')
class Meta:
ordering = ['title']
'''
def __str__(self) -> str:
return self.title
'''
class Product(models.Model):
title = models.CharField(max_length=255)
slug = models.SlugField()
description = models.TextField()
unit_price = models.DecimalField(max_digits=6, decimal_places=2)
inventory = models.IntegerField()
last_update = models.DateTimeField(auto_now=True)
collection = models.ForeignKey(Collection, on_delete=models.PROTECT)
promotions = models.ManyToManyField(Promotion)
#Error 我得到: SystemCheckError
PS - 我知道我可以直接在 list_display 中使用“collection”,因為它已經是我產品模型中的一個欄位,但我想使用 list_select_related 預加載相關欄位/表并在 list_display 中使用“collection_title”。請幫忙。謝謝。
錯誤:<class 'store.admin.ProductView'>: (admin.E108) 'list_display[3]' 的值指的是 'collection_title',它不是可呼叫的、'ProductView' 的屬性或屬性或“store.Product”上的方法。
uj5u.com熱心網友回復:
我認為你錯了,據我所知list_select_related是減少你的查詢,但你的錯誤是別的,這里說的是“list_display [3]” colection_title,這不是模型 Product 或 ProductView 的屬性或可呼叫方法班級。
django 驗證這個專案(list_display) 在下面的鏈接中,你可以看到驗證函式(_check_list_display):https : //github.com/django/django/blob/950d697b95e66deb3155896e0b619859693bc8c6/django/checks32L#
如果要訪問其他模型中的相關欄位,可以在 ProductView 中創建一個函式鏈接:
class ProductView(admin.ModelAdmin):
list_display = ['title', 'unit_price', 'inventory_status', 'collection_title',]
list_editable = ['unit_price']
list_per_page = 10
list_select_related = ['collection']
def collection_title(self, obj):
return obj.collection.title
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/395942.html
標籤:Python 姜戈 django 模型 django-admin
上一篇:Django無效表單
