我的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)
提前致谢。
答案 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)