magic related field in Django model - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: magic related field in Django model (/thread-37027.html) |
magic related field in Django model - sonh - Apr-24-2022 Hello I have a Django model class as: from django.db import models class DeliveryUpdate(models.Model): delivery_id = models.CharField(max_length=32, blank=False, unique=True) field_updates = JSONField() @property def delivery_address(self): return self.delivery_address_ref @delivery_address.setter def delivery_address(self, value): # Line 15 print ("At the setter for delivery_address") #To check if this function is called self.delivery_address_ref = value The app runs under docker. After data was populated by some csv files, the table deliveryupdate is created with fields delivery_id and field_updates (there is no delivery_address field in this table) In a utils.py code, I saw there is the codes to return a delivery_address as: delivery_id = "xzy" delivery_update = DeliveryUpdate.objects.get(delivery_id=delivery_id) delivery_address = delivery_update.delivery_address #line 27 print (str(delivery_address)) # I could see a valid delivery_address hereI do not understand here is how the value for delivery_update.delivery_address is returned (line 27) when the setter function is NOT called (eg: line #15 delivery_address(self, value)). In another word, I could not find the printout string "At the setter for delivery_address". Look around, I could see a related class as: class DeliveryAddress(models.Model): ... delivery_update = models.OneToOneField( 'DeliveryUpdate', db_column='delivery_update', to_field='delivery_id', related_name='delivery_address_ref', on_delete=models.CASCADE, max_length=32 ) ...I also saw the table deliveryaddress is created. I am new to Python and Django, could you please explain why delivery_address is returned when setter function is not called. Some magic things happen here ??? Many thanks RE: magic related field in Django model - sonh - Apr-24-2022 I think I found it. DeliveryUpdate object can have a ref of DeliveryAddress Thanks |