pie*_*zym 4 python django field django-models models
我有一个保存用户地址的模型.此模型必须具有first_name和last_name字段,因为有人希望将地址设置为收件人(如他的公司等).我想要实现的是:
感谢帮助 :)
这里有两个选择.第一个是创建一个动态查找它的方法,但使用property装饰器,以便其他代码仍然可以使用直接属性访问.
class MyModel(models.Model):
_first_name = models.CharField(max_length=100, db_column='first_name')
@property
def first_name(self):
return self._first_name or self.user.first_name
@first_name.setter
def first_name(self, value):
self._first_name = value
Run Code Online (Sandbox Code Playgroud)
这将始终引用first_name的最新值,即使相关用户已更改.您可以完全按照属性获取/设置属性:myinstance.first_name = 'daniel'
另一个选项是覆盖模型的save()方法,以便在保存时进行查找:
def save(self, *args, **kwargs):
if not self.first_name:
self.first_name = self.user.first_name
# now call the default save() method
super(MyModel, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
这样您就不必更改数据库,但只在保存时刷新 - 因此,如果相关的User对象已更改但此对象未更改,则它将引用旧的User值.
| 归档时间: |
|
| 查看次数: |
1660 次 |
| 最近记录: |