【发布时间】:2011-10-06 22:39:44
【问题描述】:
我在猴子修补 Django 时遇到了这个 post:
from django.contrib.auth.models import User
User.add_to_class('openid', models.CharField(max_length=250,blank=True))
def get_user_name(self):
if self.first_name or self.last_name:
return self.first_name + " " + self.last_name
return self.username
User.add_to_class("get_user_name",get_user_name)
我知道这并不理想,最好通过单独的模型Profile 向User 添加字段和函数。
话虽如此,我只是想了解它是如何工作的:
猴子补丁代码应该放在哪里?
代码何时运行——只运行一次?每次 Python 解释器启动一次?每个请求一次?
大概我仍然需要更改数据库架构。因此,如果我删除表
User并运行./manage.py syncdb,syncdb会“知道”一个新字段已添加到User吗?如果不是,我该如何更改架构?
【问题讨论】:
标签: python django django-models monkeypatching