2016-03-31 88 views
0

我試圖讓我的ID在Animal類中是唯一的,這樣它就會自動遞增,而不需要用戶將數據添加到字段中(因此字段被隱藏),但是我無法弄清楚如何去做。在Django Rest Framework中填充唯一ID

現在我有這個在我的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) 

這在我心中將不得不做出ID唯一,但目前它沒有做任何事情。

這是我serialisers.py供參考:

class AnimalSerialiser(serializers.HyperlinkedModelSerializer): 

    doctor = DoctorSerealiser(read_only=True) 


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

你是什麼意思'不做任何事情'? – kevswanberg

+0

因此,它顯示的字段,我可以省略ID,它會顯示爲我的表和數據庫中的'「」' – user3395936

+0

爲什麼你使用UUID作爲主鍵?爲什麼不正常的AutoField? – v1k45

回答

0

正如其他人在評論中提到,你定義你的模型錯了。 Django默認添加一個自動遞增字段。查看文檔以獲取更多信息 - https://docs.djangoproject.com/en/1.9/topics/db/models/#automatic-primary-key-fields

你真的只需要:

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

,然後你仍然可以訪問像animal.id該字段。

而UUID與自動遞增ID完全不同。請參閱wiki - 它們基本上只是幾乎不可能生成重複項的字符串。

+0

嘗試了您的建議,但如果該字段也設置了'primary_key = True',則只能將此錯誤''id'用作字段名稱。' – user3395936

+0

@ user3395936 - 你有沒有遷移或刪除並重新創建數據庫? – kdazzle