Django ';QuerySet';对象没有属性';用户';
我正在尝试从待定付款中进行查询,然后当用户请求付款时,我还希望从与登录用户对应的订单中进行检查。 这是获取撤消请求的代码:Django ';QuerySet';对象没有属性';用户';,django,Django,我正在尝试从待定付款中进行查询,然后当用户请求付款时,我还希望从与登录用户对应的订单中进行检查。 这是获取撤消请求的代码: pending_requests = WithdrawRequest.objects.filter(status='pending') 从上面的pending_requests变量获取与用户对应的订单总数的代码,该变量为pending_requests。用户: #amount query AccBalance = OrderData.objects.filter
pending_requests = WithdrawRequest.objects.filter(status='pending')
从上面的pending_requests变量获取与用户对应的订单总数的代码,该变量为pending_requests。用户:
#amount query
AccBalance = OrderData.objects.filter(payment_to=pending_requests.user, payment_status='approved').aggregate(totals=Sum(F('item__price')*F('quantity')))
问题是我遇到了以下错误:
'QuerySet' object has no attribute 'user'
My full view.py代码:
def withdraw_requests(request):
pending_requests = WithdrawRequest.objects.filter(status='pending')
#amount query
AccBalance = OrderData.objects.filter(payment_to=pending_requests.user, payment_status='approved').aggregate(totals=Sum(F('item__price')*F('quantity')))
context = {'AccBalance':AccBalance,'pending_requests':pending_requests}
return render(request, 'accounts/withdraw_requests.html', context)
models.py:
class Order(models.Model):
STATUS = (
('pending', 'pending'),
('delivered', 'delivered'),
('collected', 'collected'),
('progressing', 'progressing'),
('await', 'await'),
)
OPTIONS = (
('card', 'card'),
('momo', 'momo'),
)
ORDERTYPE = (
('single', 'single'),
('bulk', 'bulk'),
)
user_id = models.ForeignKey(User, on_delete=models.CASCADE)
status = models.CharField(max_length=250, null=True, choices=STATUS)
txn_track = models.CharField(max_length=800, blank=False, unique=True)
payment_method = models.CharField(max_length=250, choices=OPTIONS)
order_type = models.CharField(max_length=250, default='', choices=ORDERTYPE)
added_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.txn_track
class OrderData(models.Model):
PAYMENTSTATUS = (
('withdrawn', 'withdrawn'),
('rejected', 'rejected'),
('approved', 'approved'),
('pending', 'pending'),
)
item = models.ForeignKey(Item, on_delete=models.CASCADE)
order = models.ForeignKey(Order, on_delete=models.CASCADE)
quantity = models.IntegerField()
user = models.ForeignKey(User, on_delete=models.CASCADE)
payment_to = models.ForeignKey(BusinessAccount, on_delete=models.CASCADE, null=True)
payment_status = models.TextField(choices=PAYMENTSTATUS, default='approved')
def __str__(self):
return self.item.name
class WithdrawRequest(models.Model):
STATUS = (
('pending', 'pending'),
('rejected', 'rejected'),
('approved', 'approved'),
)
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True,)
business = models.ForeignKey(BusinessAccount,blank=True, default='', null=True, on_delete=models.CASCADE)
status = models.CharField(choices=STATUS, max_length=250, blank=True, default='pending')
proceeded_by = models.IntegerField(blank=True, default=0)
account_id = models.CharField(max_length=500)
payment_method = models.ForeignKey(PaymentMethod, on_delete=models.CASCADE)
date_time = models.DateField( auto_now_add=True)
def __str__(self):
return self.user.first_name+' '+self.user.last_name+ ' ('+self.payment_method.name+'='+ self.account_id+')'
pending_请求
是一组(可能有许多)请求对象的查询集。它不是单个请求,并且没有.user
属性。因此,您不能执行挂起的请求。用户。您可以获取单个实例上所有用户的集合:
pending_request_users = [pending_request.user for pending_request in pending_requests]
你可以用它来过滤你的订单数据
AccBalance = OrderData.objects.filter(
payment_to__in=pending_request_users,
payment_status='approved'
).aggregate(totals=Sum(F('item__price')*F('quantity')))
请共享相关模型。
.filter(payment_to=pending_requests.user,…)
此处pending_requests
是一个查询集(一组提取请求
实例),而不是提取请求
的实例,你到底想在这里做什么?Hello@WillemVanOnsem我已经分享了我的模型。py我想使用pending_requests获取pending_请求中用户的详细信息。userYes这是有效的解决方案。