django-tables2 自定义列
django-tables2 custom column
我现在正在处理我的第一个 Django 项目。我想呈现结果 table,其中包含来自 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 中创建了一个新的 table class 稍后 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' table:
MySQL 'grafikas' table
听起来您可以使用 annotate
获取额外的字段。
from django.db.models import Max
queryset = Priekabos.objects.annotate(max_kada_moketi=Max('grafikas__kada_moketi'))
table = PriekabosTable(queryset)
记得将字段添加到您的table。
class PriekabosTable(tables.Table):
class Meta:
model = Priekabos
attrs = {"class": "paleblue"}
fields = ('id', 'sutarties_nr', 'nuomos_pradz', 'max_kada_moketi')
我现在正在处理我的第一个 Django 项目。我想呈现结果 table,其中包含来自 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 中创建了一个新的 table class 稍后 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' table: MySQL 'grafikas' table
听起来您可以使用 annotate
获取额外的字段。
from django.db.models import Max
queryset = Priekabos.objects.annotate(max_kada_moketi=Max('grafikas__kada_moketi'))
table = PriekabosTable(queryset)
记得将字段添加到您的table。
class PriekabosTable(tables.Table):
class Meta:
model = Priekabos
attrs = {"class": "paleblue"}
fields = ('id', 'sutarties_nr', 'nuomos_pradz', 'max_kada_moketi')