2016-05-27 2 views
0

Я сейчас работаю над своим первым проектом 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 унаследует Это не работает для меня слишкомdjango-tables2 пользовательский столбец

Вот мой код:.

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

ответ

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') 
+0

Спасибо! Я застрял два дня. Определенно мне нужно больше узнать о запросах в Django. –