8

ほんの数日前に django フレームワークの使用を開始しましたが、アプリケーションに関してどうしても助けが必要です。

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

私の質問は、プロジェクトの管理リストに各「プロジェクト」の「管理者の名前」を表示するにはどうすればよいですか? プロジェクト クラス自体は管理者 ID を保持しません (Admin_Payment は保持します)。

現在、私は次の構造を持っています:(ストライプダウン)

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']

クライアントと説明はプロジェクト リストに正しく表示されますが、管理者名は表示されません。

どんな助けでも大歓迎です(意味をなさないものを投稿した場合は申し訳ありません、私はpythonとdjangoの初心者です)

4

1 に答える 1

29

フィールドの内容の表示はManyToMany、データベースが結果の各行に対して照会されるため、デフォルトではdjangoではサポートされていません。-modelにメソッドを追加することProjectで、自分で表示できます。

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"

admin_namesそしてあなたのlist_displayフィールドに入れてください!

于 2010-12-30T16:44:47.433 に答える