2015-06-16 100 views
1
class Schedule(models.Model): 
    landing = models.ManyToManyField(Place, related_name="landing_schedule", null=False)  

    def __unicode__(self): 
     return u'%s | %s' % (self.departure, self.landing) 

如何顯示ManyToManyField的管理內部值?Django ManyToManyField在管理值列表

+0

顯示你有他們是如何出現的偏好?你有沒有註冊這個模型的管理員類?如果是這樣,它們應該默認顯示在詳細信息頁面上。 –

+0

我已註冊:classAdminAdmin(admin.ModelAdmin): actions = [search_flights]'但我只獲得:Rio | flyerapp.Place.None: –

+0

哦,你只是在談論返回的字符串?或者您是否也無法在管理員中設置M2M關係? –

回答

1

假設Place有一個name字段,下面應該做你想要的。

def __unicode__(self): 
    return u'%s | %s' % (self.departure, ", ".join(l.name for l in self.landing.all())) 

取決於您有多少條記錄以及多少關係,可能會導致性能下降,所以要小心。

+1

是的,它是兼容的。我在想爲什麼沒有嘗試過。我會盡量避免性能問題。非常感謝。 –

+0

沒問題。在極限上好主意;然而,如果你開始看到問題,它可能是所有'self.landing.all()'調用。如果只在Schedule中編輯離港 - 着陸關係,則可以創建一個'已加入的登陸字符串'字段,只要保存日程安排,該字段就會更新,然後在返回的字符串中使用該字段。 –

0

你可以寫一個方法如下,並使其在管理列表顯示 model.py

class Schedule(models.Model): 
    landing =models.ManyToManyField(Place,related_name="landing_schedule", null=False) 
    # 
    # 
    def list_of_landing(self): 
     return ",".join([x.something for x in self.place.all()]) 

admin.py

class ScheduleAdmin(admin.ModelAdmin): 

    list_display = ('list_of_landing')