python – South ValueError:无法为模型成功创建字段:’module’对象没有属性

weixin_38078903 2019-09-12 11:51:23
我有一个模型(/core/models/milestone.py)使用自定义类作为属性: from core.models.IntegerRangeField import IntegerRangeField class milestone(models.Model): name = models.CharField(max_length=128, null=False, blank=False) completion = IntegerRangeField(min_value=0,max_value=100, null=False, default=0, blank=True) due_date = models.DateField(null=False, blank=False) phase = models.ForeignKey('project_phase',null=False, blank=False) last_updated_date = models.DateTimeField(null=False, blank=True, default=datetime.now()) def __unicode__(self): return self.name (实际上还有更多代码 – full copy here) 它使用的自定义类是: from django.db import models class IntegerRangeField(models.IntegerField): def __init__(self, verbose_name=None, name=None, min_value=None, max_value=None, **kwargs): self.min_value, self.max_value = min_value, max_value models.IntegerField.__init__(self, verbose_name, name, **kwargs) def formfield(self, **kwargs): defaults = {'min_value': self.min_value, 'max_value':self.max_value} defaults.update(kwargs) return super(IntegerRangeField, self).formfield(**defaults) class Meta: app_label = 'core' from south.modelsinspector import add_introspection_rules add_introspection_rules([], ["^core\.models\.IntegerRangeField\.IntegerRangeField"]) 通过这种布局,我可以运行django控制台,导入里程碑并使用它. 但是,当我运行manage.py schemamigration core –auto时,我收到以下错误: ValueError:无法为模型’milestone’成功创建字段’completion’:’module’对象没有属性’IntegerRangeField’. 什么都没有得到更新. 我有一种感觉它与交叉导入django.db.models有关,所有但都无法解决如何解决这个问题.
...全文
6 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38093996 2019-09-12
  • 打赏
  • 举报
回复
所以,这就是我的想法: 代码很好,问题是由我做的一些重构引起的(自定义字段类最初位于工具模块中,我希望它可以放在所有其他模型和东西中). 迁移文件有此字符串: ('completion', self.gf('core.tools.IntegerRangeField')(default=0, blank=True)), 而且我认为这会以某种方式搞砸南方以继续寻找core.tools.IntegerRangeField,而它已经不存在了. 我把IntegerRangeField放回到tools.py中,这一切都解决了.奇怪的.

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧