2014-12-22 4 views
5

Ich versuche, von Django 1.7.1 auf 1.8 auf meinem dev env zu aktualisieren. Ich habe anscheinend ein Problem mit einem meiner Modelle, ich denke, eine Core-Datei wurde aktualisiert und es ist mit meinem Modell unordentlich. Ich kann nicht herausfinden, was es verursacht, dass es stirbt.Django Klassenüberschreibungen schlägt fehl Systemüberprüfung

Dies ist der einzige Fehler, den ich bekomme, wenn ich einen 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>. 

ich die Klasse zu ändern Namen versuchte zu laufen versuchen, und sah mein Modell um und kann nicht scheinen, etwas zu finden, dass eine verursachen würde Überschreibung Fehler

Dies ist die Klasse:

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"),) 
+2

Django 1.8 wurde noch nicht veröffentlicht. Bleiben Sie jetzt bei 1.7.X. – Alasdair

+0

Danke! Ich bin gerade fertig mit weiteren Untersuchungen und es scheint, dass die neueren Versionen keine Variablen nach Klassen benannt haben. Ich hatte einen Klassen-Check und eine Variable Check. muss nur herausfinden, wie man sie zusammen arbeiten lässt! Danke für die schnelle Antwort! – Joey

Antwort

5

ich in das gleiche Problem lief, während ein Projekt 1,6-1,8 zu aktualisieren. Das Problem scheint von dem check Feld Ihres Modells zu stammen.
Es widerspricht der Model.check()-Methode, die während Django's system checks aufgerufen wird, um Fehler bei der Modelldefinition zu identifizieren.

Sie müssen das Feld umbenennen.

+0

Dank K. Tomov, ich habe vergessen, dies zu aktualisieren. Ich habe am Ende das check() - Feld in check_field() geändert und es funktioniert gut! – Joey