ジャンゴrestframeworkモデルマネージャを使用します

我々が作成された1関係1に2つの以上のインスタンスを維持したい場合は、ネストされた関係に対処する上で、我々は、カスタムのマネージャクラスを記述することができます。

カスタムマネージャクラスは、主に次の2つの場合に使用されます。

  • 1.元のクエリセットを変更、すべての()メソッドをオーバーライド
  • 前記方法は、データベースにデータを挿入するように、追加のクラスマネージャを追加します。

次のように管理を調製します:

django.db.models.managerインポートマネージャ


クラス:TrackManager(マネージャー)

    デフcreate_track(自己、validated_data):
        からモデルトラックをインポート
         からモデルをインポートアルバム
        album_data = validated_data.pop(' アルバム' 
        アルバム = Album.objects.create( ** album_data)
        validated_data [ ' アルバム' ] = アルバムの
        トラック = Track.objects.create(** validated_data)
         リターントラック

    デフget_queryset(自己):
        リターンManager.get_queryset(自己).filter(= is_deleted 偽)
    

注意:このモデルは法で導入されている必要があり、ヘッドの導入が間違っています。

 

管理クラスを使用します

図1において、導入model.py

クラストラック(models.Model):
    アルバム = models.ForeignKey(アルバム、related_name = ' 追跡' 
    順序 = models.IntegerField()
    タイトル = models.CharField(MAX_LENGTH = 100 
    の期間 = models.IntegerField()
    is_deleted =モデル。 BooleanField(デフォルト = False)が
    生みの親 = models.CharField(max_lengthを= 100ヌル = TRUE)オブジェクト

    = managers.TrackManager()

    クラスのMeta:
        DB_Tableの =トラック

2、serializer.pyは使用しています:

:DEF(自己、validated_data)を作成する
        トラック = Track.objects.create_track(validated_data)
         リターントラック

 

おすすめ

転載: www.cnblogs.com/wangyingblock/p/11090740.html