模型
class Person(models.Model):
first_name = models.CharField(blank=False,max_length=256,default='')
last_name = models.CharField(blank=False,max_length=256,default='')
plan = models.CharField(blank=False,max_length=256,default='')
plan_price = models.CharField(blank=False,max_length=256,default='')
Views.py
if request.method == 'POST':
if form.is_valid():
form.save(commit=True)
return index(request)
在我的modelForm中,我接受来自用户的3个值:first_name,last_name和plan。从表单发布到数据库我没有任何问题,我想知道的是我怎么能说这样的话
if plan = 'plan1':
#set plan_price to '$399'
else
#set plan_price to '$699'
#then post first_name, last_name, plan, plan_price to database
答案 0 :(得分:1)
def form_valid(self, form):
if self.object.plan = 'plan1':
form.instance.price = 399
else:
[...]
return super(your_class_name, self).form_valid(form)
您可以按self.object.filed
答案 1 :(得分:1)
您可以尝试以下操作:
save
如果计划价格始终与计划相符,您还可以覆盖模型的class Person(models.Model):
# ...
def save(self, *args, **kwargs):
self.plan_price = some_logic(self.plan)
super(Person, self).save(*args, **kwargs)
方法并保留视图:
Plan
但是,然后,您可以将属性全部替换为该字段,因为它似乎是多余的。例如,如果计划改变价格,我会考虑一个带有名称和价格字段的size
模型。