2016-04-01 12 views
3

Kendi özel API'm yapmak için Django Rest Framework kullanıyorum, ancak yukarıdaki hatayı alıyorum ve nereden geldiğinden emin değilim. Bu hata hakkında SO üzerinde başka yazılar okudum ama maalesef çok fazla yardım etmediler, bu yüzden birileri yanlış gittiğime işaret ederse çok memnun olurum. Modellerimde bir AutoField numaralı kimlikte yer aldığımda ve modelinde ve Doctor modelinde değilken işaretlemeye başladı.Unicode için zorlama: string veya arabellek gerekiyor, int found - Django Rest Framework

benim 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 

cevap

7

sorun Doktor ve Hayvan __unicode__ yöntemindedir. Int olan kimliği döndürüyorsunuz, ancak bu yöntem bir str/buffer olduğunu kabul eder. Bunu değiştirin:

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

Teşekkürler, bu sorun oldu :) – user3395936

+0

Bir şey değil. Kabul et ve yardım etse, lütfen. – ilse2005

+0

Bu çözümü, doğrudan üzerinde çalıştığım modele bağlı yabancı anahtarı silmek için kaskad içeren bir modele uyguladım. –