Django管理list_display模型方法

我有这个model.py:Django管理list_display模型方法

class Topping(models.Model): 

name = models.CharField(max_length=32)

def __str__(self):

return self.name

class Base(models.Model):

name = models.CharField(max_length=32)

slug = models.SlugField(primary_key=True)

class Advanced(models.Model):

toppings = models.ManyToManyField(Topping)

class Mymodel(Base, Advanced):

...

def toppings_list(self):

list_top = Advanced.toppings

return list_top

我想说明的配料列表中(最好是格式化的,所以只打顶模型领域name列表)在我的管理,所以:

class MymodelAdmin(admin.ModelAdmin): 

#list_display = (..., model.Mymodel.toppings_list(), ...) #Error: missing 1 required positional argument: 'self'

#list_display = (..., model.Mymodel.toppings_list(self), ...) #Error: self is not definited

list_display = (..., model.Mymodel.toppings_list, ...) #Gibberish: <django.db.models.fields.related_descriptors.ManyToManyDescriptor object at 0x0387FFD0>

只有最后一个工作,但没有提供任何有用的东西。

我想这太(我想格式化列表前显示):再次

class MymodelAdmin(admin.ModelAdmin): 

mylist=model.Mymodel.toppings_list #I don't change nothing for now

#mylist=[t for t in model.Mymodel.toppings_list] #Error: 'function' object is not iterable

list_display = ('mylist') #core.Topping.None

,最后一个工作,但没有给出任何有用的(也摘心不无)

谢谢

回答:

您只是使用方法的名称作为字符串。

list_display = ("toppings_list", ...) 

不过请注意,您的toppings_list方法本身就是绝对没有任何意义。你需要返回都与当前对象,而不是一个字段对象的浇头,你需要再格式化为一个字符串。

def toppings_list(self): 

return ", ".join(self.toppings.values_list("name", flat=True))

以上是 Django管理list_display模型方法 的全部内容, 来源链接: utcz.com/qa/266883.html

回到顶部