Реорганизовать модель Django для django_tables2 - PullRequest
0 голосов
/ 19 апреля 2020

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

например,

Текущие данные (и модель) организованы так:

id value
a1 3
a2 3
a3 4
b1 5
b2 4
b3 4

Но я хочу отобразить их как:

id a b
1  3 5
2  3 4
3  4 4

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

Есть ли другие варианты, которые я могу изучить? Ниже приведены мои модели, таблицы и файлы представлений. Столбцы в примере относятся к Parameter_ID и Forms.

models.py

class Forms(models.Model):
    id = models.TextField(db_column='ID', blank=True, null=False, 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.TextField(db_column='Source', blank=True, null=True)  # Field name made lowercase.
    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(db_column='glottocode', blank=True, null=True)  # Field name made lowercase.

    class Meta:
        managed = False

views.py

def language_detail(request, pk):
    table = LanguageDetailTable(Forms.objects.filter(glottocode=pk).values())

    return render(request, "kb/language_detail.html", {
        "table": table
    })

tables.py

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