2016-10-10 16 views
0

Djangoでnull ForeignKeyのデフォルト値を取得する方法を教えてください。例の場合:Djangoでnull ForeignKeyのデフォルト値を取得

class Owner(models.Model) 
    name = models.CharField(max_length=200, unique=True) 

class Entity(models.Model): 
    name = models.CharField(max_length=200, unique=True) 
    owner = models.ForeignKey(Owner) 

私はDRFを使用していますので、私はこのシリアライザを試してみました:

class EntitySerializer(serializers.ModelSerializer): 
    owner = serializers.SerializerMethodField(read_only=True) 

    def get_owner(self, obj): 
     if obj.owner: 
      return obj.owner_id 
     return -1 

    class Meta: 
     model = Entity 
     fields = ('id', 'name', 'owner') 

私はowner_idまたは何か他のものへのキーownerを変更する場合、これは動作します。しかし、それは他のところで依存関係があるので、私はそれを行うことができません。

答えて

-1

フィールドにdefault属性を設定できます。 docs

これを設定すると、入力値が入力されない場合にフィールドに使用されるデフォルト値が与えられます。設定されていない場合、デフォルトの動作は属性をまったく入力しないことです。

部分的な更新操作では、デフォルトは適用されません。部分的な更新の場合、受信データに含まれるフィールドのみが有効な値が返されます。

+0

私はデータベースに設定したくないのですが、代わりに値をNULLにすることをデータベースに入れておきます。 – dnit13

+0

シリアライザフィールドに 'default'属性を設定することを意味します。モデルではありません。添付されているドキュメントのリンクを確認してください。 – Sagar

+0

はい、データの取得中にデフォルトが機能しません。まずそれを試してみるべきです。 – dnit13

関連する問題