【问题标题】:django-tables2 custom columndjango-tables2 自定义列
【发布时间】:2016-05-27 13:03:31
【问题描述】:

我现在正在处理我的第一个 Django 项目。我想渲染结果表,其中包含 Priekabos 模型中的所有字段和 Grafikas 中的一个自定义列,其中应包含类似于:

SELECT max(kada_moketi) FROM grafikas WHERE priekabos_id = ?

无论我从示例中尝试什么都行不通。我是否应该使用该自定义查询编写另一个视图函数:

(Grafikas.objects.filter(priekabos_id=1)

两者都没有:

.aggregate(Max('kada_moketi')

两者都没有:

.latest('kada_moketi')

为我工作我在 tables.py 中创建了一个新的表类,稍后 PriekabosTable 将继承?这对我也不起作用。

这是我的代码:

models.py

class Grafikas(models.Model):
    id = models.AutoField(primary_key=True)
    mokejimo_nr = models.IntegerField()
    kada_moketi = models.DateField()
    priekabos = models.ForeignKey('Priekabos', models.DO_NOTHING)

class Priekabos(models.Model):
    id = models.AutoField(primary_key=True)
    sutarties_nr = models.CharField(unique=True, max_length=45, verbose_name='Sut. Nr.')
    nuomos_pradz = models.DateField()
    sutarties_trukme = models.IntegerField()

views.py

def priekabos_table(request):
    table = PriekabosTable(Priekabos.objects.all())
    RequestConfig(request, paginate={'per_page': 20}).configure(table)
    return render(request, 'isperkamoji_nuoma/priekabos_table.html', {'table': table})

tables.py

class PriekabosTable(tables.Table):
    class Meta:
        model = Priekabos
        attrs = {"class": "paleblue"}
        fields = ('id', 'sutarties_nr', 'nuomos_pradz')

为了更好地理解,这里是“grafikas”表: MySQL 'grafikas' table

【问题讨论】:

    标签: python django django-tables2


    【解决方案1】:

    听起来您可以使用annotate 获取额外字段。

    from django.db.models import Max
    queryset = Priekabos.objects.annotate(max_kada_moketi=Max('grafikas__kada_moketi'))
    table = PriekabosTable(queryset)
    

    记得将字段添加到您的表格中。

    class PriekabosTable(tables.Table):
        class Meta:
            model = Priekabos
            attrs = {"class": "paleblue"}
            fields = ('id', 'sutarties_nr', 'nuomos_pradz', 'max_kada_moketi')
    

    【讨论】:

    • 谢谢!我被困了两天。当然我需要了解更多关于在 Django 中查询的知识。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    相关资源
    最近更新 更多