无法分配,必须是实例Django

2024-09-29 17:22:04 发布

您现在位置:Python中文网/ 问答频道 /正文

Iam使用Django和Rest框架将数据发布到API中,但在使用另一个表的主键分配外键的表单数据时,会抛出错误 "Cannot assign "'12345'": "ResourceSection.resourceId" must be a "MasterResource" instance."

注意:12345确实存在(创建它是为了测试目的)

Models.py

class MasterResource(models.Model):
    route_name = models.CharField(max_length=100)
    resourceId = models.CharField(primary_key=True, max_length=100)
class ResourceSection(models.Model):
    resourceId = models.ForeignKey(MasterResource, on_delete=models.CASCADE, default=1)
    resource_name = models.CharField(max_length=100)
    sectionId = models.CharField(primary_key=True, max_length=100)

Views.py

def create_resource_section(request):
    if request.method == "POST":
        sectionId = int(datetime.now(tz=timezone.utc).timestamp()*1000)
        resource_name = request.POST.get("resource_name")
        resourceId = request.POST.get("resourceId")
        try:
            section_object = ResourceSection(
                resourceId = resourceId,
                resource_name = resource_name,
                sectionId = sectionId
            )
            section_object.save()
            return HttpResponse(str(sectionId) + ' Section is successfully created')

        except Exception as e:
            return HttpResponseServerError(e)

为什么POST数据无法从MasterResource设置resourceId?我做错了什么


Tags: 数据namepymodelsrequestsectionpostlength
1条回答
网友
1楼 · 发布于 2024-09-29 17:22:04

从上面提到的错误中,我可以看出您需要获取MasterResource对象,然后在Resource部分传递该对象

def create_resource_section(request):
if request.method == "POST":
    sectionId = int(datetime.now(tz=timezone.utc).timestamp()*1000)
    resource_name = request.POST.get("resource_name")
    resourceId = request.POST.get("resourceId")
    resource_object = MasterResource.objects.get(resourceId=resourceId)

    try:
        section_object = ResourceSection(
            resourceId = resource_object,
            resource_name = resource_name,
            sectionId = sectionId
        )
        section_object.save()
        return HttpResponse(str(sectionId) + ' Section is successfully created')

    except Exception as e:
        return HttpResponseServerError(e)

相关问题 更多 >

    热门问题