Django 根据值通过表单提交传递数据
我试图通过表单传递数据,这取决于表单提交的不同计算 全套车型Django 根据值通过表单提交传递数据,django,django-forms,Django,Django Forms,我试图通过表单传递数据,这取决于表单提交的不同计算 全套车型 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.Mod
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价格详细信息(请求):
如果request.method==“POST”:
#创建表单实例并使用请求中的数据填充它:
表单=价格表单(request.POST)
#检查它是否有效:
如果form.is_有效():
form.save()
返回呈现(请求,'confirmation.html',{'form_data':form.cleaned_data})
其他:
form=PriceForm()
返回呈现(请求'main.html',{'form':form})
因此,我们的想法是根据合同类型和开始日期更改confirmation.html页面上的显示详细信息,下面是一个基本但最不正确的示例:
def pricingcalc(请求):
如果PriceForm.contract=='year1'
返回价格.pricing*AdminData.day\u费率\u年份1
其他的
返回价格.pricing*AdminData.day\u费率\u年份3
总结如下:
- 在确认页面上列出值的输出
- 基于天数x价格的输出取决于一年合同或三年合同
感谢您的帮助。如果我们在文档中查看模型表单是如何工作的(更准确地说),我们可以看到,一旦我们在
模型表单上调用.save()
,我们就会得到该模型的一个实例
在您的情况下,我们可以假设如下:
如果form.is_有效():
price_instance=form.save()
现在,如果您想显示定价模型的一些动态计算值,可以在价格
模型上添加一个基于价格.合同
计算它们的方法
这里的重要思想是,一旦ModelForm
被认为是有效的
,并且您在其上调用.save()
,这将在默认情况下提交数据库中的数据,并返回该模型的一个实例,您可以在以后使用。如果我们在文档中查看模型表单的工作方式(更准确地说)我们可以看到,一旦我们在ModelForm
上调用.save()
,我们将得到该模型的一个实例
在您的情况下,我们可以假设如下:
如果form.is_有效():
price_instance=form.save()
现在,如果您想显示定价模型的一些动态计算值,可以在价格
模型上添加一个基于价格.合同
计算它们的方法
这里的重要思想是,一旦ModelForm
被视为有效
,并且您在其上调用.save()
,这将默认提交数据库中的数据,并返回该模型的一个实例,您可以在以后使用。发布您的PriceForm
定义。这会有帮助的。它是一个模型形式
?然后可以使用创建的实例。但是在我们看到表单之前,这些都是假设。Modelform,添加了它。也发布您的PriceForm
定义。这会有帮助的。它是一个模型形式
?然后可以使用创建的实例。但是,在我们看到表单之前,这些都是假设。Modelform,添加了它。谢谢你,这是有意义的,并且会对它做更多的研究。我不知道如何在模型中设置一个方法来计算价格,我找不到正确的方法:如果self.contract==year\u choice('year1')
如果self.contract==year\u choice[0][0]
。我建议查看model_utils包和选项类:)Alex我仍然不知道如何将值传递到确认页面,也不知道如何在模型中进行计算。我花了6个小时寻找,我的头很痛:谢谢你,这是有道理的,我会做更多的研究。我不知道如何在模型中设置一个方法来计算价格,我找不到正确的方法:如果self.contract==year\u choice('year1')
如果self.contract==year\u choice[0][0]
。我建议查看model_utils包和选项类:)Alex我仍然不知道如何将值传递到确认页面,也不知道如何在模型中进行计算。在过去的6个小时里,我一直在寻找,我的头很痛