Django类覆盖无法通过系统检查 [英] Django class overrides fails System check
问题描述
我正在尝试在我的开发环境中从Django 1.7.1升级到1.8.我的一个模型似乎有问题,我认为核心文件已升级且与我的模型混在一起.我似乎无法弄清楚是什么原因导致的.
I am trying to upgrade from Django 1.7.1 to 1.8 on my dev env. I seem to be having an issue with one of my models, I think a core file got upgraded and its messing with my model. I cant seem to figure out what's causing it to die.
这是我尝试运行manage.py测试时遇到的唯一错误
This is the only error I get when I attempt to run a manage.py test
CommandError: System check identified some issues:
ERRORS:
graphite_alerts.CheckResults: (models.E020) The 'CheckResults.check()' class method is currently overridden by <django.db.models.fields.related.ReverseSingleRelatedObjectDescriptor object at 0x3a76310>.
我尝试更改类名并环顾我的模型,似乎找不到任何会导致覆盖错误的内容
I tried changing the class name and looked around my model and cant seem to find anything that would be causing an override error
这是课程:
class CheckResults(models.Model):
WARN = 'warn'
ERROR = 'error'
OK = 'ok'
DOWN = 'down'
STATUS_CHOICES = (
(WARN, 'Warn'),
(ERROR, 'Error'),
(OK, 'OK'),
(DOWN, 'Down'),
)
target = models.CharField(max_length=1000)
additional_graph_target = models.CharField(max_length=1000, blank=True)
value = models.DecimalField(max_digits=9, decimal_places=2)
timestamp = models.DateTimeField(db_index=True)
status = models.CharField(max_length=6, choices=STATUS_CHOICES, default='ok')
check = models.ForeignKey(Check, related_name='results')
tags = TaggableManager()
def __unicode__(self):
return self.target
@models.permalink
def get_absolute_url(self):
return ('graphite-check-result-list-view', (), {'pk': self.check.pk, 'target': self.target})
def generate_graphite_image_url(self):
params = { }
params['target'] = []
params['target'].append(self.target)
params['target'].append('threshold(' + str(self.check.warn) + ',"Warn","yellow")')
params['target'].append('threshold(' + str(self.check.error) + ',"Error","red")')
params['from'] = '-7days'
params['width'] = '900'
params['minorGridLineColor'] = 'C0C0C0'
params['majorGridLineColor'] = 'C0C0C0'
params['bgcolor'] = '333333'
request = requests.get(self.check.GRAPHITE_URL+self.check.RENDER_PAGE,params=params)
return urllib2.unquote(request.url.decode('UTF-8'))
def generate_additional_graphite_image_url(self):
params = { }
params['target'] = []
params['target'].append(self.additional_graph_target)
params['target'].append('threshold(' + str(self.check.warn) + ',"Warn","yellow")')
params['target'].append('threshold(' + str(self.check.error) + ',"Error","red")')
params['from'] = '-7days'
params['width'] = '900'
params['minorGridLineColor'] = 'C0C0C0'
params['majorGridLineColor'] = 'C0C0C0'
params['bgcolor'] = '333333'
request = requests.get(self.check.GRAPHITE_URL+self.check.RENDER_PAGE,params=params)
return urllib2.unquote(request.url.decode('UTF-8'))
class Meta:
ordering = ("timestamp",)
unique_together = (("target", "timestamp"),)
推荐答案
在将项目从1.6升级到1.8时遇到了同样的问题.
I ran into the same problem while updating a project from 1.6 to 1.8.
该问题似乎源于模型具有的check
字段.
它与Model.check()
方法冲突,该方法在 Django的系统检查中调用帮助您识别模型定义中的错误.
The issue seems to stem from the check
field that your model has.
It conflicts with the Model.check()
method, which is called during Django's system checks to help you identify errors in model definition.
您必须重命名该字段.
这篇关于Django类覆盖无法通过系统检查的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!