私が達成しようとしているのは、Django RESTフレームワークを通してAppオブジェクトを作成することです。私は、入れ子になったバージョンのオブジェクトを使用して、これを既存のクライアントに関連付けます。Djangoシリアライザ - リレーションを持つオブジェクトを作成する
あなたがより良いアイデアを得ることができるようにこれは、私が持っているモデルである:あなたはクライアントが倍数のアプリ(1> N)を持つことができる見ることができ、およびアプリは(複数のバージョンを持つことができたよう
class Client(models.Model):
client = models.CharField(max_length=200)
mail = models.CharField(max_length=200, null=True)
class Keyword(models.Model):
keyword = models.CharField(max_length=200)
client = models.ForeignKey(Client, related_name='client_keywords',on_delete=models.CASCADE)
class App(models.Model):
client = models.ForeignKey(Client, related_name='client_apps', on_delete=models.CASCADE)
appname = models.CharField(max_length=200, unique=True)
class Version(models.Model):
apps = models.ForeignKey(App, related_name='version',on_delete=models.CASCADE)
version = models.CharField(max_length=20, null=True)
を1 - > N)
私はので、私はnecessari関係でAppオブジェクトを作成することができ、次のシリアライザを実装しましたが、私は何か間違ったことをやっている必要があります。ここ
class AppSerializer(serializers.ModelSerializer):
version = VersionSerializer(many=True)
client = ClientSerializer()
class Meta:
model = App
fields = ('pk','client',..., 'version')
def create(self, validated_data):
versions_data = validated_data.pop('version')
clients_data = validated_data.pop('client')
app = App.objects.create(**validated_data)
app.client = Client.objects.get(pk=clients_data['client'])
for version_data in versions_data:
Version.objects.create(apps=app, **version_data)
return app
私の考えでは得ることです私はPOSTで送信している "clients_data ['client']"のpkから、そのPKのクライアントオブジェクトを取得し、この新しいアプリケーションのためにそれを割り当て、その後、必要なバージョンを作成します。
しかし、多くのテストの後、データベースのclient_idは空のままです。どのようにクライアントを正しく割り当てることができますか?