2016-05-19 4 views
0

私はmodel.pyに2つのフィールドを持っています。一つは複数選択ドロップダウンと一つは空です。私が望むのは、ユーザーがタイプのメニューから「ガス」を選択すると、金額欄に距離* 2の自動入力が行われるようにしたいということです。 これを行うことはできますか?python djangoの新機能は、フィールドを自動入力する方法ですか?

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

これはフォーム自体で行いますか? – AKS

+0

良い質問@AKSモデルの管理者からやってもらえますか? – FrankBud

+0

実際にどこで行っても問題ありません。問題は私がそれをすることですか?どのようにフォーム自体でそれを行うには? – FrankBud

答えて

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) 
関連する問題