2010-12-30 16 views
8

私はちょうど数日前にdjangoフレームワークを使い始めました。私はアプリケーションに助けが必要です。djangoはmanytomanyfieldの内容を表示します

これは、クライアント、プロジェクト、管理者、および管理支払いクラスで構成されます。ここで、admin_paymentは管理者とプロジェクトのIDを保持します。

私の質問はどのように私のプロジェクトの管理リストに各 "プロジェクト"の "管理者の名前"を表示できますか?プロジェクトのクラス自体は

現在、私は次のような構造を持っている(Admin_Paymentはありません)管理者のIDを保持していない:

(ダウンストライピング)

models.py

class Admin(models.Model): 
    admin_name = models.CharField(unique = True, blank = False, null = False, max_length = 128, verbose_name = u'admin full name') 

    def __unicode__(self): 
     return self.admin_name 
    class Meta: 
     ordering = ('id',) 
     verbose_name = u'Admin Info' 

class Project(models.Model): 
    client = models.ForeignKey(Client, verbose_name = u'Client') 
    description = models.ForeignKey(Description, verbose_name = u'project description') 
    admins = models.ManyToManyField(Admin, verbose_name = u'Administrators', through = 'Admin_Payment') 

class Admin_Payment(models.Model): 
    admin = models.ForeignKey(Admin, verbose_name = u'Administrator') 
    project = models.ForeignKey(Project, verbose_name = u'project') 

admin.py(ダウンストライピング)

class AdminInline(admin.TabularInline): 
    model = Admin 

class ProjectAdmin(admin.ModelAdmin): 
    radio_fields = {'position': admin.HORIZONTAL, 'solution': admin.HORIZONTAL} 
    inlines = [AdminInline, ] 
    list_display = ['client','description','admin_name'] 

クライアントと説明が一覧表示プロジェクトで正しく表示されますが、管理者名は

ではありません210

すべてのヘルプは、データベースので、ManyToManyフィールドの内容はジャンゴでデフォルトでサポートされていない表示 (私は意味をなさないdoesntの何かを投稿場合は申し訳ありませんが、私は、PythonとDjangoで初心者です)

答えて

28

を高く評価しています結果の各行に対して照会されます。

class Project(models.Model): 
    .... 
    def admin_names(self): 
     return ', '.join([a.admin_name for a in self.admins.all()]) 
    admin_names.short_description = "Admin Names" 

とあなたのlist_display分野でadmin_namesを置く:あなたはadding a method to your Project-modelによってそれを自分で表示することができます!

+0

すごく感謝しました。どのように私は各管理者のためのフィルタを追加できますか? – Thordin9

+0

はそれを理解した。もう一度 – Thordin9

+0

を返すと、返された値にverbose_nameを追加できますか? – Thordin9

関連する問題