I have DjangoTable for this model:
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'}
I want to add column with values from this model:
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)
Now I have fields Student Subject Mark, I want to add filed id_teacher from another model, and relationship must remain.
You can add foreign key value in table using table.Coulmn()
and specifying accessor
like below:
id_teacher = tables.Column(accessor='id_subject.id_teacher')
So your Mark_Table
will look like:
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'}
Read more about adding custom field at docs