2014-12-22 24 views
5

Benim dev env'de Django 1.7.1'den 1.8 sürümüne yükseltmeye çalışıyorum. Modellerimden biriyle ilgili bir sorun yaşıyorum sanırım bir çekirdek dosya yükseltilmiş ve modelimle karıştırıyor. Neyin ölmesine sebep olduğunu anlayamıyorum.Django sınıfı geçersiz kılmıyor Sistem denetimi

ben sınıf adını değiştirerek denedim ve benim modeli etrafına baktı bir manage.py testi

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>. 

çalıştırma girişiminde ve cant bir neden olacağını bir şey bulmak gibi bu alıyorum sadece hatadır

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 henüz piyasaya sürülmedi. Şimdilik 1.7.X ile sopa. – Alasdair

+0

Teşekkürler! Daha fazla araştırma yapmayı bitirdim ve daha yeni sürümler sınıflardan sonra adlandırılan değişkenlere sahip olmayı sevmiyor. Sınıf Kontrolü ve değişken bir Check vardı. sadece onları birlikte nasıl çalıştıracağını anlamaya ihtiyacım var! Hızlı cevabınız için teşekkür ederim! – Joey

cevap

5

1.6 ile 1.8 bir proje güncellenirken ben aynı sorun koştu:

geçersiz kılma hatası Bu sınıftır.

Sorun, modelinizin sahip olduğu check alanından kaynaklanıyor gibi görünüyor.
Model tanımındaki hataları tanımlamanıza yardımcı olması için Django's system checks sırasında çağrılan Model.check() yöntemiyle çakışıyor.

Alanı yeniden adlandırmanız gerekecek.

+0

Teşekkürler K. Tomov, bunu gerçekten güncellemeyi unuttum. Check_field() alanına check() alanını değiştirdim ve iyi çalışıyor! – Joey