python - How to pre-populate field from ForeignKey on Django via decorator? -


suppose have 3 classes on model in django 1.11 & python3.5:

class 1:

class country(models.model):     name = models.charfield(max_length=255)      def __str__(self):         return self.name 

class 2:

class city(models.model):     country = models.foreignkey(country)     name = models.charfield(max_length=255)     latitude = models.decimalfield(max_digits=15, decimal_places=10)     longitude = models.decimalfield(max_digits=15, decimal_places=10)      def __str__(self):         return self.name 

class 3:

class profile(abstractuser):     username = models.foreignkey(user, max_length=100, blank=false, unique=true)     address = models.charfield(max_length=255, blank=false)     city = models.foreignkey(city, on_delete=models.cascade, related_name="city_set", max_length=100, blank=false, null=true)     country = models.charfield(max_length=255, blank=false)     birthplace = models.foreignkey(city, on_delete=models.cascade, related_name="birthplace_set", max_length=100, blank=false, null=true)     latitude = models.decimalfield(max_digits=15, decimal_places=10)     longitude = models.decimalfield(max_digits=15, decimal_places=10)          def __str__(self):         return self.username      @property     def country(self):         if not self.city:             return false         else:             negara = city.objects.get(name=self)             return negara.country      @property     def latitude(self):         if not self.birthplace:             return false         else:             lat = city.objects.get(latitude=self)             return lat.latitude      @property     def longitude(self):         if not self.birthplace:             return false         else:             lnt = city.objects.get(longitude=self)             return lnt.longitude 

my questions are:

  1. how , autofill/pre-populate country's attribute @ profile's class city's attribute (which's foreignkey city's class)? i've tried using @property decorator nothing value.
  2. can use same class (from city's class) foreignkey fields in 1 class (to profile's class) twice? in case city & birthplace attribute, , repeat question above latitude & longitude's attribute birthplace's attribute.

what purpose of populating these fields , @property calls? rather use direct call this:

    person.city.country.name     person.city.longitude     person.city.latitude 

it works longitude , latitude properties well. if need pre-populated charfield can in save() method so:

    class person(models.model):     ...     def save(self, *args, **kwargs):       self.country = self.city.country.name       self.longitude = self.city.country.name       self.latitude = self.city.country.name       super(person, self).save(*args, **kwargs) 

and yes, can use many foreignkey fields want.


Comments

Popular posts from this blog

python Tkinter Capturing keyboard events save as one single string -

android - InAppBilling registering BroadcastReceiver in AndroidManifest -

javascript - Z-index in d3.js -