web-dev-qa-db-ja.com

django:throughを使用したmanytomanyfieldはadminにどのように表示されますか?

タイトルに記載されているように、manytomanyfieldthroughは管理サイトにどのように表示されますか?

class SchoolClass(models.Model):
    id = models.AutoField(primary_key = True)
    class_name = models.TextField()
    level = models.IntegerField()
    taught_by = models.ManyToManyField(User,related_name="teacher_teaching",through='TeachSubject')
    attended_by = models.ManyToManyField(User,related_name='student_attending')

    def __unicode__(self):
        return self.class_name
    class Meta:
        db_table = 'classes'


class TeachSubject(models.Model):
    teacher = models.ForeignKey(User)
    class_id  = models.ForeignKey(SchoolClass)
    subject = models.ForeignKey(Subject)

管理サイトのモデルSchoolClassには、生徒に出席するためのフィールドがありますが、教師にはありません。

30
goh

InlineModelAdminを使用する必要があります。 ドキュメント

class TeachSubjectInline(admin.TabularInline):
    model = TeachSubject
    extra = 2 # how many rows to show

class SchoolClassAdmin(admin.ModelAdmin):
    inlines = (TeachSubjectInline,)

admin.site.register(SchoolClass, SchoolClassAdmin)
57
DrTyrsa