私は比較的新しいDjangoです。データをフィルタリングするときに問題が発生しています。があるDjangoは2つのフィールドにフィルタを組み合わせます
Account(models.Model):
name = models.CharField(max_length=60)
hotel = models.ForeignKey(Hotel)
account_type = models.CharField(choices=ACCOUNT_TYPE, max_length=30)
Transaction(models.Model):
account = models.ForeignKey(Account, related_name='transaction')
transaction_type = models.CharField(choices=TRANSACTION_TYPE, max_length=15)
description = models.CharField(max_length=100, blank=True, null=True)
date_created = models.DateTimeField(default=timezone.now)
ACCOUT_TYPE:私は、下記の二つのモデルを、持っている
私は、アカウントの種類が指定された日付範囲内Income
とExpense
あるすべてのトランザクションをフィルタリングする ACCOUNT_TYPE = (
(0, 'Asset'),
(1, 'Liabilities'),
(2, 'Equity'),
(3, 'Income'),
(4, 'Expense')
)
。 Djangoでこれらのフィルタをどのように組み合わせることができますか?
私はこのように試してみました:
income_account = Account.objects.filter(account_type=3)
expense_account = Account.objects.filter(account_type=4)
transactions = Transaction.objects.filter(Q(
account=income_account,
date_created__gte=request.data['start_date'],
date_created__lte=request.data['end_date']
) & Q(
account=expense_account,
date_created__gte=request.data['start_date'],
date_created__lte=request.data['end_date'])).order_by('date_created')
しかし、それは働いていません。これは、次のエラーが発生します。
ProgrammingError: more than one row returned by a subquery used as an expression