我有一个CarRent模型,它是对汽车模型的ForeignKey,在CarRent detailView上,我想要修改CarRent模型以及汽车模型,代码对于CarRent模型很好,但是更改汽车模型会导致“AttributeError at / Car /requests/4/ type对象”没有属性‘object’错误。
class Car(models.Model):
car_owner = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='car_owner', on_delete=models.CASCADE)
car_model = models.CharField(max_length=20, blank=True, null=True)
rented = models.BooleanField(default=False)
class CarRent(models.Model):
car = models.ForeignKey(Car, related_name='rented_car', on_delete=models.CASCADE)
driver = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='driver_renting', on_delete=models.CASCADE)
active_rent = models.BooleanField(default=False, null=True)
rent_paid = models.BooleanField(default=False)
@login_required
@driver_required(redirect_field_name='app:home')
@csrf_protect
def car_rent_detail_view(request, pk):
object = get_object_or_404(CarRent, id=pk)
# queryset = Car.objects.get(id=pk)
car_object = get_object_or_404(queryset, id=pk)
paystack = PaystackAccount(
settings.PAYSTACK_EMAIL,
settings.PAYSTACK_PUBLIC_KEY,
object.total_cost
)
context = {'object': object, 'pk_public': settings.PAYSTACK_PUBLIC_KEY, 'currency': 'NGN', 'paystack': paystack,
}
if request.method == 'POST':
if paystack.verify_transaction(request.POST['reference']):
messages.success(request, "paystack payment successfull")
car_rented = Car.object.get(pk=pk)
car_rented.rented = True
rent_activation = CarRent.objects.get(pk=pk)
rent_activation.active_rent = True
rent_activation.rent_paid = True
rent_activation.save()
messages.success(request, "Your Rent has successfully being updated")
return render(request, 'app/CarRent_detail.html', context=context)任何帮助都将不胜感激。
发布于 2021-05-15 12:57:05
这是一个错误,您需要使用objects来访问管理器方法,而不是对象。因此,替换:
car_rented = Car.object.get(pk=pk)
^^^^^^通过以下方式:
car_rented = Car.objects.get(rented_car__pk=pk)您可以通过CarRent (即“rented_car”)将查询从Car模型反转到rented_car。更多信息可以在文档中找到。
https://stackoverflow.com/questions/67546930
复制相似问题