2016-05-20 11 views
0

私は、文字列のリストを受け取って返すシリアライザを持っています。 これらの文字列は、内部的にモデルインスタンスです。カスタム関連フィールド

シリアライザで新しいtypesリストを受け取ったら、そのタイプが存在するかどうかをチェックします。存在する場合はそれを他のモデルに関連付けます。それ以外の場合は新しいインスタンスを作成して関連付けます。

私は、カスタムRelatedField

class TypeRelatedField(serializers.StringRelatedField): 
    def to_internal_value(self, data): 
     try: 
      return Type.objects.get(name=data) 
     except Type.DoesNotExist: 
      return Type.objects.create(name=data) 

とタイプが存在する場合、それはそれ以外の作成、返されるようなタイプのリスト

types = TypeRelatedField(many=True, required=False) 

を受けシリアライザでを使用してそれを行うことができます。これを行うのが適切かどうか分かりませんが、createupdateの方法でこれを行う必要がありますか?

答えて

0

これがうまくいけば、それは正しいことです;)モデル(作成、更新)を操作するすべてのメソッドを実行する必要がある場合は、おそらくここで行うのが最善でしょうDRYの理由からです。そうでない場合は、作成または更新で行います。しかし、たとえば作成時にのみ必要な場合は、更新時のみ作成するといいですし、そこに行く必要があります。

関連する問題