2016-03-31 25 views
0

私は、Animal固有のクラスでIDを作成しようとしているので、ユーザーがデータをフィールドに追加する必要がなくなります(ファイルが隠されていないので自動的にインクリメントします)。どのようにそれを行うかを把握する。Django Rest Frameworkで一意のIDを設定する

今、私は私のmodels.pyでこれを持っている:

私の心の中でIDを一意にする必要がありますが、現在、それは何もしません
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) 

は、ここに参照のために私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

はあなたが提案したものを試しましたが、' id 'というエラーを受け取ることはフィールドが' primary_key = True 'を設定している場合にのみフィールド名として使用できます。 – user3395936

+0

@ user3395936 - データベースを移行または削除して再作成したことがありますか? – kdazzle

関連する問題