创建由多对多字段组成的模型实例
Create model instance consisting of many-to-many field
我正在尝试使用 post 请求创建一个模型实例,但是我遇到的一个问题是该模型由一个多对多字段组成。现在我正处于一个阶段,我有一个由模型实例(模块)的主键组成的数组,我希望与我试图创建的模型(一个学生)相关联。
请查看下面我的代码,因为我不知道哪里出错了,经过一些基础研究后,我似乎需要使用 .set()
方法。
PUT['modules']
对应于 array
,由值 [1,2,3,5]
.
组成
def create_student(request):
"""API for creating a student"""
if request.method == "POST":
PUT = json.loads(request.body)
student = Student(name=PUT['name'], join_date=PUT['join_date'], academic_year=PUT['academic_year'],
modules=PUT['modules'] # THIS IS WHERE I NEED HELP
)
student.save()
return JsonResponse(student.to_dict())
return HttpResponseBadRequest("Invalid method")
感谢您的宝贵时间。
为了填充 ManyToManyField
关系,首先需要保存您想要 link 的两个项目。这是必要的,因为否则它们没有主键:一个 links 两个项目通过在 连接 table 中添加一条记录和两个主键link.
如果您因此想要 link 您正在构建的 Student
模块,您首先创建 student
,然后您可以使用 student.modules.add(…)
到 link 通过解压缩模块的主键列表将其添加到(现有)模块:
def create_student(request):
"""API for creating a student"""
if request.method == "POST":
PUT = json.loads(request.body)
student = Student.objects.create(
name=PUT['name'], join_date=PUT['join_date'], academic_year=PUT['academic_year']
)
student<strong>.modules.add(*PUT['modules'])</strong>
return JsonResponse(student.to_dict())
else:
# …
我正在尝试使用 post 请求创建一个模型实例,但是我遇到的一个问题是该模型由一个多对多字段组成。现在我正处于一个阶段,我有一个由模型实例(模块)的主键组成的数组,我希望与我试图创建的模型(一个学生)相关联。
请查看下面我的代码,因为我不知道哪里出错了,经过一些基础研究后,我似乎需要使用 .set()
方法。
PUT['modules']
对应于 array
,由值 [1,2,3,5]
.
def create_student(request):
"""API for creating a student"""
if request.method == "POST":
PUT = json.loads(request.body)
student = Student(name=PUT['name'], join_date=PUT['join_date'], academic_year=PUT['academic_year'],
modules=PUT['modules'] # THIS IS WHERE I NEED HELP
)
student.save()
return JsonResponse(student.to_dict())
return HttpResponseBadRequest("Invalid method")
感谢您的宝贵时间。
为了填充 ManyToManyField
关系,首先需要保存您想要 link 的两个项目。这是必要的,因为否则它们没有主键:一个 links 两个项目通过在 连接 table 中添加一条记录和两个主键link.
如果您因此想要 link 您正在构建的 Student
模块,您首先创建 student
,然后您可以使用 student.modules.add(…)
到 link 通过解压缩模块的主键列表将其添加到(现有)模块:
def create_student(request):
"""API for creating a student"""
if request.method == "POST":
PUT = json.loads(request.body)
student = Student.objects.create(
name=PUT['name'], join_date=PUT['join_date'], academic_year=PUT['academic_year']
)
student<strong>.modules.add(*PUT['modules'])</strong>
return JsonResponse(student.to_dict())
else:
# …