Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 8, 2013 14:09:22

michaelpak
Зарегистрирован: 2013-09-08
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

object.get по двум полям

Есть модель User:

class User(models.Model):
	name = models.CharField(max_length=64)
И есть модель Report:
class Report(models.Model):
	dateTime = models.DateTimeField(auto_now_add = True)
	amount = models.CharField(max_length=30)
	sender = models.ForeignKey(User, related_name="sender_reports", blank='TRUE')
	recipient = models.ForeignKey(User, related_name="recipient_reports", blank='TRUE')
Нужно вытащить из базы все Reports, в которых есть пользователь и в поле sender, и в поле recipient, отсортировав по полю dateTime.
Делал так:
send_reports = user.sender_reports.all()
get_reports = user.recipient_reports.all()
но тогда на странице сначала будут исходящие отчеты, а после входящие отчеты, а надо их перемешать.

Отредактировано michaelpak (Сен. 8, 2013 14:11:28)

Офлайн

#2 Сен. 8, 2013 19:43:48

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Офлайн

#3 Сен. 9, 2013 15:25:36

Dr.Livsi
От:
Зарегистрирован: 2010-02-15
Сообщения: 192
Репутация: +  3  -
Профиль   Отправить e-mail  

object.get по двум полям

Ну для начала надо добавить в поля sender, recipient null=True (одного blank=True не достаточно)
Далее все просто:
q=Reports.objects.filter(sender__isnull=False, recipient__isnull=False).order_by('dateTime').
По заданному условию django.db.models.Q нам не нужен (там и то и другое).



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version