Форум сайта python.su
Есть вот такие модели
class Schet(models.Model):
nomer = models.CharField("Номер счета",max_length = 10)
document = models.ImageField("Счет",upload_to = '/home/minotavr_x86/python/scheta/src/scheta/documents')
date_in = models.DateField("Дата создания")
komu = models.CharField("Для кого счет",max_length = 30, null=True)
otdel = models.IntegerField("Отдел",max_length = 3, null=True)
na_chto = models.CharField("Краткое описание",max_length = 40, null=True)
scheta_prim = models.CharField("Примечание",max_length = 50, null=True)
class Way(models.Model):
id_schet = models.ForeignKey(Schet)
id_people = models.ForeignKey(People)
date = models.DateField("Дата")
podpis = models.BooleanField("Подпись")
stop = models.BooleanField("Остановка счета")
way_prim = models.CharField("Примечания",max_length = 50, null=True)
scheta = Schet.objects.annotate(Max('way__date'))
Офлайн
minotavr_x861. Так делать нельзя. Если хотите объединять данные по разным моделям - придется вручную делать SQL-запросы.
Что добавить к данному запросу, что бы в результате были все поля из обоих моделей?
...
id_schet = models.ForeignKey(Schet, related_name = way)
...
...
for schet in scheta:
print schet.way # результат - объект класса Way
...
Офлайн
scheta = Schet.objects.annotate(Max('way__date'))
way = [el.way_set.all().annotate(Max('date')) for el in scheta]
Отредактировано (Май 21, 2010 11:01:18)
Офлайн
scheta = Schet.objects.extra(tables = ['dbscheta_way'], select = {'max_date':'date','stop':'dbscheta_way.stop','way_prim':'way_prim'},
where = ['date = (Select MAX(date) FROM dbscheta_way WHERE dbscheta_way.id_schet_id=dbscheta_schet.id) '] )
Офлайн