Использовать внешний ключ в django_tables2 - PullRequest
0 голосов
/ 29 апреля 2020

Я использую django_tables2 для отображения некоторых данных, однако в одном из столбцов используется внешний ключ, и я не могу понять, почему эти данные не отображаются.

Я знаю, что внешний ключ работает, так как я могу получить к нему доступ в оболочке, используя:

In [25]: b = Forms.objects.get(id = "v_akkadianakka1240-mM-1")                  
In [26]: b.source.display                                                       
Out[26]: 'Black 2000'

Но мне не ясно, как это переводится в класс table.py.

model.py

class Sources(models.Model):
    category = models.TextField(db_column='CATEGORY', blank=True) 
    bibtexkey = models.TextField(db_column='BIBTEXKEY', blank=True, primary_key = True)
    display = models.TextField(db_column='DISPLAY', blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'sources'

    def __unicode__(self):
        return self.display

class Forms(models.Model):
    id = models.TextField(db_column='ID', blank=True, primary_key = True)  # Field name made lowercase.
    local_id = models.IntegerField(db_column='Local_ID', blank=True, null=True)  # Field name made lowercase.
    language_id = models.TextField(db_column='Language_ID', blank=True, null=True)  # Field name made lowercase.
    parameter_id = models.TextField(db_column='Parameter_ID', blank=True, null=True)  # Field name made lowercase.
    value = models.TextField(db_column='Value', blank=True, null=True)  # Field name made lowercase.
    form = models.TextField(db_column='Form', blank=True, null=True)  # Field name made lowercase.
    segments = models.IntegerField(db_column='Segments', blank=True, null=True)  # Field name made lowercase.
    comment = models.TextField(db_column='Comment', blank=True, null=True)  # Field name made lowercase.
    source = models.ForeignKey(Sources, on_delete=models.CASCADE, db_column='source')
    cognacy = models.IntegerField(db_column='Cognacy', blank=True, null=True)  # Field name made lowercase.
    loan = models.IntegerField(db_column='Loan', blank=True, null=True)  # Field name made lowercase.
    glottocode = models.TextField(blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'forms'

table.py

class LanguageDetailTable(tables.Table):
    class Meta:
        model = Forms
        template_name = "django_tables2/bootstrap.html"
        fields = ("parameter_id", "form", "forms.source.display", )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...