简体   繁体   中英

New to python django, how to auto populate a field?

I have two fields in my model.py one has multi choice drop down and one that is empty. What I would like to have is that if the user select "Gas" from the menu for type, I would like the amount field to get auto populated with distance * 2 Can I do that?

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)

Thanks in advance.

You can use the django-observer app for this. Although there are cleaner Javascript approaches, you can make the automation totally depend on Django.

First, modify the amount field as:

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

since it won't take any values when the model object is initially saved to the database. Then the rest of the code will look something like:

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)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM