2017-02-13 4 views
2

私はDjangoの管理ページで遊んでいましたが、立ち往生してしまって、ドキュメントに解決策が見つからないようです。私は、Location、RestaurantFeature、Employeeという3つの異なるモデルを定義しました。 3つのモデルがすべて互いにリンクされています。この質問は私の従業員のモデルに固有のものです:新しいlist_display after list_filterが有効になりましたDjango 1.10

class Employee(models.Model): 
    restaurant = models.ForeignKey(RestaurantFeature, on_delete=models.CASCADE) 
    first_name = models.CharField(max_length=50) 
    last_name = models.CharField(max_length=50) 
    age = models.IntegerField() 
    address = models.CharField(max_length=80) 
    prior_experience = models.BooleanField(default=False) 
    hour_contract = models.IntegerField() 
    hourly_salary = models.FloatField() 

    def _get_full_name(self): 
     return '%s %s' % (self.first_name, self.last_name) 
    full_name = property(_get_full_name) 

    def __str__(self): 
     return "%s" % self.full_name 

    class Meta: 
     verbose_name_plural = "Employees" 

私が持っているカスタム管理レイアウト:

class EmployeeAdmin(admin.ModelAdmin): 
    list_display = ('full_name','restaurant','prior_experience',) 
    list_filter = ('restaurant',) 
    search_fields = ('first_name', 'last_name',) 
admin.site.register(Employee, EmployeeAdmin) 

これは素晴らしい作品!定義されているディスプレイは機能し、フィルタも機能します。私が望むもの:restaurant filterが有効になったら、新しいlist_displayです!この方法により、必要に応じてより詳細な情報を提供することができます。

が適用された後に新しいlist_displayを定義する方法はありますか?

詳細CLEARER: list_displayは、フルネーム、レストランおよび以前の経験を定義します。レストランのフィルターが適用されたら、これらの変数をフルネーム、レストラン、以前の経験、時間契約、時間別給与に変更したいと思います!たとえば、すべてのレストランのすべての従業員に一般的な情報が表示されますが、たとえば「McDonald's」が選択されると、McDonaldの従業員にはより詳細な情報が提供されます。

+1

これは明らかではありませんが、私は恐れています。 「レストランフィルタが有効になったら、新しいlist_display」という正確な意味は?どのように新しい? –

+0

すみません。 'list_display'はフルネーム、レストラン、以前の経験を定義します。レストランのフィルターが適用されたら、これらの変数をフルネーム、レストラン、以前の経験、時間契約、時間別給与に変更したいと思います!たとえば、すべてのレストランのすべての従業員は一般的な情報で表示されますが、たとえば「Mc Donalds」が選択されると、Mc Donaldsの従業員にはより詳細な情報が提供されます。 –

答えて

0

ModelAdminクラスは、要求をパラメータとして受け取るget_list_display() methodを定義します。 request.GETにフィルタパラメータが含まれているかどうかを確認し、そのメソッドから別のフィールドリストを返すと考えられます。

+0

ありがとう!これをコードに入れようとします。 –

関連する問題