【发布时间】:2020-08-24 20:57:45
【问题描述】:
我正在构建一个自行车租赁应用程序。
前端:用户选择开始和结束日期,并在列表视图中获取所有可用的自行车、带有类别和适当价格的自行车。
价格:价格是根据 2 个条件计算的。车辆类别和持续时间。(因为价格有持续时间。
1-3 天 = 145 美元运动
1-3 天 = 145 美元的滑板车
4-7 天 = 2004 运动版
4-7 天 = 2004 踏板车等
只能从前端表单中选择的日期来实现持续时间,然后将其转换为天数。
我需要将这些天作为持续时间来获得合适的价格并在列表视图中相应地显示在每个类别下。
模型.PY
类车辆类别:
@property
def price(self, duration):
for item in VehiclePrice.objects.all():
If item.vehicle_category.title == self.title and (duration >= item.slab.start and duration <= item.slab.end):
return item.net_price
VIEWS.PY
类 HomeView(ListView):
template_name = 'app/home.html'
def get(self, request):
if request.method == "GET":
start_date = request.GET.get('start_date')
end_date = request.GET.get('end_date')
if start_date and end_date:
start_date = datetime.strptime(start_date, "%m/%d/%Y").date()
end_date = datetime.strptime(end_date, "%m/%d/%Y").date()
duration = (end_date - start_date).days +1
vehiclecategory= VehicleCategory.objects.all()
context = {
'vehiclecategory1': vehiclecategory.filter(main_category= 'E-Cycle'),
'vehiclecategory2': vehiclecategory.filter(main_category= 'E-Scooter'),
'form':CartQuantityForm(),
'dateform': DateForm()
}
return render(request, self.template_name, context )
这里我得到了持续时间,如何在模型方法价格参数中传递这个并让上面的查询集工作????“”“
【问题讨论】:
-
如果您希望
price()成为方法,请删除@property装饰器。除非您定义了额外的 setter,否则您不能将参数传递给属性,但这很可能不是您想要使用的。 -
好吧,我只需要在模型VehicleCategory中添加价格,你认为我可以在模型中添加一个字段并编写一个方法吗?
-
您希望显示所有您的类别还是仅显示具有特定价格的类别?
-
所有类别。因为所有类别都会有价格。
标签: django django-models django-forms django-views