Django Tables2 添加来自另一个模型的列

DjangoTables2 Add column from another model

我有这个模型的 DjangoTable:

class Mark(models.Model)
    id_mark = models.AutoField(primary_key=True, verbose_name='Id запису')
    id_student = models.ForeignKey(Student, blank=False, null=False, default=None, on_delete=models.CASCADE,verbose_name='Студент')
    id_subject = models.ForeignKey(Subject, blank=False, null=False, default=None, on_delete=models.CASCADE,verbose_name='Предмет')
    mark = models.DecimalField(decimal_places=3, max_digits=5, blank=False, null=False, default=None, verbose_name='Оцінка')

    class Meta:
        verbose_name = 'Оцінка'
        verbose_name_plural = 'Оцінки'

    def __str__(self):
       return "{} {} {}".format(self.id_student, self.id_subject, self.mark)

Table:

class Mark_Table(tables.Table):
    class Meta:
         model = Mark
         exclude = ('id_mark',)
         attrs = {'class': 'paleblue'}

我想添加包含此模型值的列:

class Subject(models.Model)
    id_subject = models.AutoField(primary_key=True, verbose_name='Id предмету')
    id_teacher = models.ForeignKey(Teacher, blank=False, null=False, default=None, on_delete=models.CASCADE,verbose_name='Вчитель')
    name = models.CharField(max_length=32, blank=False, null=False, default=None, verbose_name='Назва предмету')

    class Meta:
        verbose_name = 'Предмет'
        verbose_name_plural = 'Предмети'

    def __str__(self):
        return "{}".format(self.name)

现在我有字段 Student Subject Mark,我想从另一个模型添加字段 id_teacher,并且必须保留关系。

您可以使用 table.Coulmn() 并指定 accessor 在 table 中添加外键值 如下所示:

id_teacher = tables.Column(accessor='id_subject.id_teacher')

所以你的 Mark_Table 看起来像:

class Mark_Table(tables.Table):
    # Define all the custom fields here including any override or adding other fields and include it in fields in meta class
    id_teacher = tables.Column(accessor='id_subject.id_teacher')

    class Meta:
         model = Mark
         fields = ['mark', 'id_teacher']  # specify all the fields you want to display here
         attrs = {'class': 'paleblue'}

docs

阅读有关添加自定义字段的更多信息