2014-12-03 16 views
7

Sadece 3,0 quickstart tutorial (büyük intro btw) Django-istirahat-Framework denedik ve koştuDjango-istirahat-Framework 3.0 Alan adı '<field>' modeli için geçerli değil `ModelBase`

Hata Mesajı kendi sistemimde/masamda uygularken bu hata.

ImproperlyConfigured at /calls/ 
Field name `Datecreated` is not valid for model `ModelBase`. 

çabuk googled ve ben başka durumda birisi bu çözümü kurtarmak istedim bu yüzden bir şey bulamadı (aynı zamanda tamamen yeni) aynı konu karşılaşır. Kodun tamamını yapıştırdım, çünkü bu konuya takılıp kalıyorsanız, muhtemelen yenisiniz ve bunların hepsinin nasıl bir araya geldiğini görmek için bunu kullanabilirsiniz.

Tablo 'CallTraceAttempts'

 CallTraceAttemptId DateCreated ... 
    1    95352 2009-04-10 04:23:58.0000 
    2    95353 2009-04-10 04:24:08.0000 

Kod

### models.py in the 'lifeline' app 
from __future__ import unicode_literals 
from django.db import models 

class CallTraceAttempts(models.Model): 

    # Change these fields to your own table columns 
    calltraceattemptid = models.FloatField(db_column='CallTraceAttemptId', blank=True, null=True, primary_key=True) # Field name made lowercase. 
    datecreated = models.DateTimeField(db_column='DateCreated', blank=True, null=True) # Field name made lowercase. 

    class Meta: 
     managed = False # I don't want to create or delete tables 
     db_table = 'CallTraceAttempts' # Change to your own table 


### urls.py 
from django.conf.urls import patterns, include, url 
from lifeline.models import CallTraceAttempts # Change to your app instead of 'lifeline' 
from rest_framework import routers, serializers, viewsets 

# Serializers define the API representation 
class CallTraceAttemptsSerializer(serializers.HyperlinkedModelSerializer): 
    class Meta: 
     model = CallTraceAttempts 
     fields = ('calltraceattemptid', 'Datecreated') 

# ViewSets define the view behavior 
class CallTraceAttemptsViewSet(viewsets.ModelViewSet): 
    queryset = CallTraceAttempts.objects.all() 
    serializer_class = CallTraceAttemptsSerializer 

# Routers provide an easy way of automatically determining the URL conf 
router = routers.DefaultRouter() 
router.register(r'calls', CallTraceAttemptsViewSet) 

urlpatterns = patterns('', 
    url(r'^', include(router.urls)), 
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')) 
) 

cevap

9

Açıklama

Yani mesele urls.py en 'alanlarına' başlığı altında burada olur. Seri hale getiricinizdeki alanların tam olarak (büyük/küçük harf duyarlı), model.py'nizdeki alana eşleştiğinden emin olun.

### urls.py  
#... 
# Serializers define the API representation 
class CallTraceAttemptsSerializer(serializers.HyperlinkedModelSerializer): 
    class Meta: 
     model = CallTraceAttempts 
     fields = ('calltraceattemptid', 'datecreated') ### Issue was right here, earlier version had 'Datecreated'