2016-04-01 2 views
3

私は自分の安らかなAPIを作るのにDjango Rest Frameworkを使用していますが、上記のエラーが発生しています。私はこのエラーに関する他の投稿を読んだことがありますが、残念ながら彼らはあまり役に立たなかったので、誰かが私が間違っているところを指摘できたら分かります。私のモデルでidをAutoFieldにして、ではなく、Animalというモデルにフラグを立てると、それが起き始めました。Unicodeに強制する:必要な文字列またはバッファintが見つかりました - Django Rest Framework

私のmodels.py:

# Create your models here. 
class Doctor(models.Model): 

    id = models.AutoField(primary_key=True) 
    name = models.CharField(max_length=20) 

    def __unicode__(self): 
     return self.id 

class Animal(models.Model): 
    id = models.AutoField(primary_key=True) 
    name = models.CharField(max_length=200) 
    gender = models.CharField(max_length=10, choices=GENDER) 
    breed = models.CharField(max_length=200,) 
    adoption = models.BooleanField(default=False) 
    vaccines = models.CharField(max_length=20, choices=VACCINES) 
    doctor = models.ForeignKey(Doctor, null=True) 

    def __unicode__(self): 
     return self.id 

serialisers.py:

class DoctorSerealiser(serializers.HyperlinkedModelSerializer): 
    class Meta: 
     model = Doctor 
     fields = ('id' , 'name') 


class AnimalSerialiser(serializers.HyperlinkedModelSerializer): 

    # doctor = DoctorSerealiser(read_only=True) 


    class Meta: 
     model = Animal 
     fields = ('id' , 'name' , 'gender' , 'breed' , 'adoption' , 'vaccines', 'doctor') 

views.py

class AnimalList(viewsets.ModelViewSet): 
    queryset = Animal.objects.all() 
    serializer_class = AnimalSerialiser 

class DoctorDetail(viewsets.ModelViewSet): 
    queryset = Doctor.objects.all() 
    serializer_class = DoctorSerealiser 

答えて

7

問題は医師や動物の__unicode__方法です。あなたはint型のidを返していますが、このメソッドはstr/bufferを認識します。それに変更してください:

def __unicode__(self): 
    return str(self.id) 
+0

ありがとう、それは問題でした:) – user3395936

+0

あなたはようこそ。それが受け入れてupvoteを助けたら、してください。 – ilse2005

+0

私は、このソリューションを、私が直接作用していたモデルにリンクされている外部キーを削除するカスケードを備えたモデルに適用しました。 –

関連する問題