python django新手,如何自动填充字段?

时间:2016-05-19 06:40:12

标签: python django

我的model.py中有两个字段,一个有多选下拉,另一个是空。我想要的是,如果用户从菜单中选择“Gas”类型,我希望金额字段自动填充距离* 2 我能这样做吗?

CHOICE = (
    ('Meal', 'Meal'),
    ('Gas', 'Gas'),
    )
type = models.CharField(max_length=10, choices=CHOICE)
distance = models.CharField(max_length=100)
amount = models.CharField(max_length=100)

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以使用django-observer应用。虽然有更简洁的Javascript方法,但您可以使自动化完全依赖于Django。

首先,将金额字段修改为:

amount = models.CharField(max_length=100, blank=True, null=True) 

因为模型对象最初保存到数据库时不会采用任何值。然后其余的代码看起来像:

from observer.decorators import watch

def compute_amount(sender, obj, attr):
     if obj.type == 'Gas':
          obj.amount = obj.distance * 2 
          obj.save()

@watch('type', compute_amount, call_on_created=True) 
class FuelConsumption(models.Model):
     CHOICE = (
              ('Meal', 'Meal'),
              ('Gas', 'Gas'),
              )
     type = models.CharField(max_length=10, choices=CHOICE)
     distance = models.CharField(max_length=100)
     amount = models.CharField(max_length=100, blank=True, null=True)