sách gpt4 ai đã đi

django - 在 Django+Django REST 中创建具有外键关系的嵌套资源

In lại 作者:行者123 更新时间:2023-12-05 07:59:59 31 4
mua khóa gpt4 Nike

我对 Python-Django 和 web 开发还很陌生,我被困在这个使用 POST 创建新资源的特殊问题上。

我正在为 REST API 使用 Django REST 框架,我正在尝试创建一个新资源。该模型具有外键关系,我希望一次性创建相关资源。我发布了一个示例模型、序列化程序和 View ,以便我清楚我的问题。

** 我的模型有两个具有多对一关系的类。

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')

** 我尝试创建资源的 View 看起来像

@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)
khác:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

** 我的输入看起来像这样,我想创建 Carmaker 资源以及嵌套的 Carmodels。

{
"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 请求中创建这种资源?提前致谢

1 Câu trả lời

我遇到过同样的事情,根据我的经验(很奇怪),如果您将这些键设置为指向已经存在的“makerkey”,它就会起作用。尝试手动创建 Carmaker,将新的“makerkey”指向上面的示例并重试 POST。

关于django - 在 Django+Django REST 中创建具有外键关系的嵌套资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19750319/

31 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com