Django类覆盖无法通过系统检查 [英] Django class overrides fails System check

查看:144
本文介绍了Django类覆盖无法通过系统检查的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在我的开发环境中从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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆