我正在尝试创建一个查询集,以过滤用户租用的所有汽车。 汽车租赁模型有一个外键,用于存储汽车租赁时的用户ID
我当前的解决方案是这样的,在这里我得到当前的用户ID,然后尝试根据用户ID筛选Cars数据库。
view.py:
def view_hire(request):
current_users_id = request.user.id
car_hired = Cars_hired.objects.filter(user_id__in=current_users_id)
args =
{
'car_hired': car_hired,
}
模型
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
def __str__(self):
return str(self.user.id)
class car_hired(models.Model):
car = models.ForeignKey('Car', on_delete=models.CASCADE)
customer = models.ForeignKey('UserProfile', on_delete=models.CASCADE)
start_date = models.DateField(help_text='Date of booking')
end_time = models.DateField(help_text='Date of booking')
def __str__(self):
return str(self.id)
但是,我似乎无法使它正常工作,并且出现错误“'int'对象不可迭代”
我想创建一个查询集,该查询集返回与查询匹配的数据行
例如,如果当前用户的ID是10,我想获得该用户租用的所有汽车。所有数据存储在car_hirer_is == 10
的行中答案 0 :(得分:0)
这是导致错误的部分:
...(user_id__in=current_users_id)
当您添加 __ in 部分时,django会认为current_users_id是可迭代的,而current_users_id = request.user.id
是单个ID。要使其正常运行,请将其更改为:
def view_hire(request):
current_users_id = request.user.id
car_hired = Cars_hired.objects.filter(customer__user_id=current_users_id)
我还将重新考虑变量的名称(current_user_id代替current_users_id,cars_hired代替car_hired)。