2016-03-31 7 views
0

Ich versuche, meine ID in der Klasse Animal einzigartig, so dass es automatisch erhöht, ohne dass ein Benutzer Daten in das Feld hinzufügen (so das Feld ist ausgeblendet), aber ich kann nicht finde heraus, wie es geht.Füllen Sie eindeutige ID in Django Rest Framework

Im Moment habe ich dies in meinem models.py:

class Animal(models.Model): 
    id = models.CharField(max_length=100, blank=True, unique=True, default=uuid.uuid4, primary_key=True) 
    name = models.CharField(max_length=200) 

, die in meinem Kopf muss id einzigartig machen, aber zur Zeit ist es nicht nichts tun.

Hier ist meine serialisers.py Referenz:

class AnimalSerialiser(serializers.HyperlinkedModelSerializer): 

    doctor = DoctorSerealiser(read_only=True) 


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

Was meinst du mit "tut nichts"? – kevswanberg

+0

So zeigt es das Feld an und ich kann die ID weglassen und es wird als "" "in meiner Tabelle und Datenbank angezeigt – user3395936

+0

Warum verwenden Sie UUID als Primärschlüssel? Warum nicht das normale AutoField? – v1k45

Antwort

0

Wie andere Leute in den Kommentaren erwähnt haben, Sie definieren Ihr Modell falsch. Django fügt standardmäßig ein automatisch inkrementierendes Feld hinzu. Weitere Informationen finden Sie in der Dokumentation - https://docs.djangoproject.com/en/1.9/topics/db/models/#automatic-primary-key-fields.

Sie wirklich brauchen nur:

class Animal(models.Model): 
    name = models.CharField(max_length=200) 

und dann können Sie immer noch das Feld zugreifen wie animal.id.

Und UUIDs sind völlig anders als eine automatisch inkrementierende ID. Sehen Sie die wiki - sie sind im Grunde nur Strings, die fast unmöglich sind, Duplikate zu generieren.

+0

hat versucht, was Sie vorgeschlagen haben, aber diese Fehlermeldung' 'id' kann nur als Feldname verwendet werden, wenn das Feld 'primary_key = True' setzt. ' – user3395936

+0

@ user3395936 - Haben Sie Ihre Datenbank entweder migriert oder gelöscht und neu erstellt? – kdazzle

Verwandte Themen