【发布时间】:2020-12-27 21:36:39
【问题描述】:
我正在尝试根据表单提交的不同计算从表单中传递数据
完整模型
from django.db import models
from datetime import datetime, date
# Create your models here.
year_choice = [
('year1','1-Year'),
('year3','3-Year')
]
weeksinyear = 52
hours = 6.5
class AdminData(models.Model):
year1 = models.IntegerField()
year3 = models.IntegerField()
@property
def day_rate_year1(self):
return self.year1 / weeksinyear / hours
@property
def day_rate_year3(self):
return self.year3 / weeksinyear / hours
class Price(models.Model):
name = models.CharField(max_length=100)
contract = models.CharField(max_length=5, choices=year_choice)
start_date = models.DateField(default=datetime.now)
end_date = models.DateField(default=datetime(2021,3,31))
epoch_year = date.today().year
year_start = date(epoch_year, 1, 4)
year_end = date(epoch_year, 3 , 31)
def __str__(self):
return self.name
@property
def pricing(self):
price_days = self.start_date - self.year_end
return price_days
观看次数
def price_detail(request):
if request.method == 'POST':
# create a form instance and populate it with data from the request:
form = PriceForm(request.POST)
# check whether it's valid:
if form.is_valid():
form.save()
return render(request,'confirmation.html',{'form_data': form.cleaned_data})
else:
form = PriceForm()
return render(request, 'main.html', {'form': form})
所以想法是根据合同类型和开始日期更改confirmation.html页面上的显示详细信息,下面是一个基本但最不正确的示例:
def pricingcalc(request):
if PriceForm.contract == 'year1'
return Price.pricing * AdminData.day_rate_year1
else
return Price.pricing * AdminData.day_rate_year3
总结一下:
- 在确认页面上列出值的输出
- 输出基于天数 x 价格,具体取决于一年合同或三年合同。
希望这是有道理的。
感谢您的帮助。
【问题讨论】:
-
也发布您的
PriceForm定义。我会帮你的。是ModelForm吗?然后您可以使用创建的实例。但在我们看到表格之前,这都是假设。 -
Modelform,已添加。
标签: django django-forms