2017-12-27 20 views
0

私はこのmodel.pyを持っていますしたがって:Djangoの管理list_displayモデル法

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 

、最後の一つは

(もトッピングNoneでない)が、便利なものを与えません動作します

ありがとう

答えて

1

文字列としてメソッドの名前を使用します。

list_display = ("toppings_list", ...) 

しかし、あなたのtoppings_listメソッド自体は全く意味を成さないことに注意してください。フィールドオブジェクトではなく、現在のオブジェクトに関連するトッピングを返す必要があります。したがって、文字列としてフォーマットする必要があります。

def toppings_list(self): 
    return ", ".join(self.toppings.values_list("name", flat=True)) 
関連する問題