я столкнулся со следующей проблемой, в основном я делаю это так:Джанго комплекс фильтрация связанных объектов
class Account(models.Model):
TraffPerMonth = models.IntegerField(default=0)
Tariff = models.ForeignKey('Tariff')
class Tariff(models.Model):
InetTraff = models.IntegerField(default='0')
и вот выбор:
for user in Account.objects.all():
t_traff = long(user.Tariff.InetTraff)
if u_traff >= t_traff:
#do something
pass
это занимает некоторое время, в в большинстве случаев я теряю процессорное время, выполняя поиск через пользователей, которые не злоупотребляют своим лимитом. Вот простой SQL-запрос, который делает то, что мне нужно:
select ba.TraffPerMonth from billing_account ba , billing_tariff bt where ba.TraffPerMonth > bt.InetTraff group by ba.id;
Как я могу выполнить запрос выше с помощью Django? Я пробовал поиск в google, но то, что я видел, является примером, если что-то NULL, и в моем примере мне нужно сравнить с некоторым значением.
Заранее спасибо.
с F ('TraffPerMonth') он говорит: Файл "", строки 28, в NameError: имя 'F' не определен без - он ожидает, что буквальное, но не строка 'TraffPerMonth'. –
onorua
Вам нужно импортировать F: 'из django.db.models import F' –