外部キーの一例としてModelSerializer使用知識_serializer.save(プロジェクト= OBJ)#はセーブ機能渡されなければならないか、または正常に追加することはできません。

1、以下の2つのモデルがあります

プロジェクト

クラスプロジェクト(models.Model):
"" "
项目表
"""
ID = models.AutoField(PRIMARY_KEY =真)
名= models.CharField(max_lengthを= 50、verbose_name = '项目名称')
バージョン= models.CharField(MAX_LENGTH = 50、verbose_name = 'を版本')
= = models.CharField(MAX_LENGTH = 50、verbose_name = '类型'、選択肢ProjectTypeタイプ)
説明= models.CharField(MAX_LENGTH = 1024、ブランク=真、ヌル=真、verbose_name =」描述')
状態= models.BooleanField(デフォルト=真、verbose_name ='状态')
LastUpdateTime = models.DateTimeField(auto_now =真、verbose_name ='最近修改时间')
CREATETIME = models.DateTimeField(auto_now_add =真、verbose_name ='创建时间')
ユーザー= models.ForeignKey(ユーザー、on_delete = models.SET_NULL、ヌル=真、MAX_LENGTH = 1024、verbose_name = ' 作成した')

DEF __unicode __(自己):
戻りますself.name

DEF __str __(自己):
戻りself.nameの

クラスメタ:
verbose_name =「アイテム」
=「アイテム」verbose_name_plural

B、ホスト(外側の結合にIDプロジェクト)

クラスGlobalHost(models.Model):
"" "
ホスト域名
"""
ID = models.AutoField(PRIMARY_KEY =真)
プロジェクト= models.ForeignKey(プロジェクト、on_delete = models.CASCADE、verbose_name = '项目')
名=モデル。 CharFieldです(MAX_LENGTH = 50、verbose_name = '名称')
ホスト= models.CharField(MAX_LENGTH = 1024、verbose_name = 'ホスト地址')
説明= models.CharField(MAX_LENGTH = 1024、ブランク=真、真= NULL、verbose_name =」描述')
状態= models.BooleanField(デフォルト=真、verbose_name ='状态')

デフget_relatedb(自己):
HostRelateDB.objects.filter(user__post =自己)を返す

デフ__unicode __(自己):
自己を返します。名前

デフ__str __(自己):
戻りself.name

クラスメタ:
verbose_name = 'ホスト'
= 'HOSTの管理' verbose_name_plural


図2に示すように、新しいホスト構成ModelSerializerによって、以下の配列の:

A、GlobalHostSerializer
GlobalHostSerializerクラス(serializers.ModelSerializer):
"" "
関連情報シリアル化されたホスト
" ""

クラスのメタ- :
モデル= GlobalHost
フィールドは=( 'ID'、 'PROJECT_ID'、 '名前'、 'ホスト'、 'ステータス'、」説明「)


。3、新しいロジック見ます

プリント( "ホストデータを追加します。"、データ)次のフォーマット位データ:{ 'PROJECT_ID':1、 '名称': '1111'、 'ホスト': '111'、 '記述': '111'}
OBJ = Project.objects.get(ID =データ[ "PROJECT_ID"])
= GlobalHostSerializerシリアライザ(データ=データ)
transaction.atomicと():
:serializer.is_valid(IF)
serializer.save()
外部キーPROJECT_IDの
serializer.save(OBJ =プロジェクト)#外部キーが保存機能の一例として渡されなければなりませんそうでない場合は、成功を追加することはできません
 

おすすめ

転載: www.cnblogs.com/yoyo008/p/11585882.html