私はPython-DjangoとWeb開発に非常に慣れていないため、POSTを使用して新しいリソースを作成するというこの特定の問題に行き詰まっています。
REST API に Django REST フレームワークを使用しており、新しいリソースを作成しようとしています。モデルには外部キー関係があり、関連するリソースを一度に作成したいと考えています。質問が明確になるように、サンプルモデル、シリアライザー、およびビューを投稿しています。
** 私のモデルには、多対 1 の関係を持つ 2 つのクラスがあります。
class Carmodel(models.Model):
modelkey = models.BigIntegerField(primary_key=True)
makerkey = models.ForeignKey('Carmaker', db_column='makerkey', related_name='models')
modelname = models.CharField(max_length=1024)
class Meta:
db_table = 'carmodel'
class Carmaker(models.Model):
makerkey = models.BigIntegerField(primary_key=True)
makername = models.CharField(max_length=1024)
class Meta:
db_table = 'carmaker'
** 以下のようなシリアライザークラスがあります
class CarmodelSerializer(serializers.ModelSerializer):
class Meta:
model = Carmodel
fields = ('modelkey','makerkey','modelname')
class CarmakerSerializer(serializers.ModelSerializer):
models = CarmodelSerializer(many=True)
class Meta:
model = Carmaker
fields = ('makerkey','makername','models')
** リソースを作成しようとしているビューは次のようになります
@api_view(['POST'])
def carmaker(request, makerkey, format=None):
if request.method == 'POST':
serializer = CarmakerSerializer(data=request.DATA)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
** 入力は次のようになり、ネストされた Carmodels とともに Carmaker リソースを作成したいと考えています。
{
"makerkey": 1,
"makername": "lamborghini",
"models": [
{
"modelkey": 11,
"makerkey": 1,
"modelname": "reventon"
},
{
"modelkey": 12,
"makerkey": 1,
"modelname": "aventador"
}
]
}
**私は次のような応答を得ています
{
"models": [
{
"makerkey": [
"Invalid pk '1' - object does not exist."
]
},
{
"makerkey": [
"Invalid pk '1' - object does not exist."
]
}
]
}
単一の POST リクエストでこの種のリソースを作成する方法はありますか? 前もって感謝します