【发布时间】:2014-07-01 19:29:59
【问题描述】:
在 Django 1.5 的应用程序中更改模型的实例方法是否需要通过 South 迁移?
我的理解是你不能序列化随机的 Python 代码......此外,我理解迁移实际上是为了管理对表模式的更改——比如为表中的记录添加属性或字段......或者管理对数据类型本身的更改(例如将明文密码升级为散列/加盐密码)。
所以——如果没有直接更改模型的属性,和/或没有更改特定字段类型或其他任何内容——那么不需要迁移,对吗?
而且——一般来说——假设 Django 模型中的实例方法和/或静态方法的更改不需要迁移是否安全?
(目前,我认为没有。通过 Stackoverlow 仔细检查我的想法。)
怎么样:更改模型经理?即:影响对象的实例化的方法?
具体...关于我关于更改“实例方法”的问题的第一部分...在这种情况下,模型子类化另一个自定义模型,我想更改子类化模型中的一些代码,例如所以:
类注册(ApiModel): #init方法等,在这里 def pretty_semester(self): 尝试: sem = self.enrollment_dict.get('CourseSemester', '无学期') 如果不是 sem: (...) 如果结果: (...) sem 中的 elif 'MTS': 结果 = re.findall(compiled_mts_match, sem) 如果结果: base_string = "其他 B 20" 如果 len(results[0]) == 2: 如果结果[0][1] == '02': base_string = '冬季 B 20' elif 结果[0][1] == '04': base_string = '春天 B 20' elif 结果[0][1] == '07': base_string = '夏季 B 20' elif 结果[0][1] == '08': base_string = '夏季 B 20' elif 结果[0][1] == '10': base_string = '秋季 B 20' 返回 '%s%s' % (base_string, results[0][0]) (...) 返回 sem 除了: 返回 sem如果我像这样在上述课程的“漂亮学期”方法中只更改一个 elif 语句......
def pretty_semester(self): 尝试: sem = self.enrollment_dict.get('CourseSemester', '无学期') 如果不是 sem: (...) 如果结果: (...) #此 elif 语句的超级小改动... sem 中的 elif 'MTS': 结果 = re.findall(compiled_mts_match, sem) 如果结果: base_string = "其他 B 20" 如果 len(results[0]) == 2: 如果结果[0][1] == '02': base_string = '冬季 B 20' elif results[0][1] == '03': # 换行 base_string = 'Spring B 20' # 换行 elif 结果[0][1] == '04': base_string = '春天 B 20' elif 结果[0][1] == '07': base_string = '夏季 B 20' elif 结果[0][1] == '08': base_string = '夏季 B 20' elif 结果[0][1] == '10': base_string = '秋季 B 20' 返回 '%s%s' % (base_string, results[0][0]) (...) 返回 sem 除了: 返回 sem...那么这甚至需要迁移吗?
(不...不会,对吗?)
(现在如果我正在调整自定义模型管理器......那么??)
基本上,除了对上述示例的洞察力之外,我还在寻求一些清晰而简单的经验法则——当对模型进行黑客攻击时——需要迁移……如果有任何这样的提示可以概括的。我也知道,在 Django 1.7 中处理迁移的方式发生了一些重大变化,但是——在这种情况下——我使用的是 1.5 版。
【问题讨论】:
标签: django django-models migration django-south