Hello
I have a Django model class as:
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:
Look around, I could see a related class as:
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
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
