我正在嘗試使用 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")
感謝您的時間。
uj5u.com熱心網友回復:
為了填充ManyToManyField關系,首先需要保存要鏈接的兩個專案。這是必要的,因為否則它們沒有主鍵:通過在聯結表中添加一條記錄與要鏈接的兩個主鍵來鏈接兩個專案。
因此,如果您想將Student您正在構建的 與模塊鏈接起來,您首先創建student,然后您可以student.modules.add(…)通過解包模塊的主鍵串列將其鏈接到(現有)模塊:
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.modules.add(*PUT['modules'])
return JsonResponse(student.to_dict())
else:
# …
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/362613.html
