Python 在创建不询问DB的相关对象时,是否可以将PK用作FK?
我试图使用这段代码创建一个新的M2M对象Python 在创建不询问DB的相关对象时,是否可以将PK用作FK?,python,django,django-models,Python,Django,Django Models,我试图使用这段代码创建一个新的M2M对象 course_id = int(request.POST['course']) if not Status.objects.get(course=course_id, user=request.user.profile, role="student"): rel = Status(course=course_id, user=request.user.profile, role="stud
course_id = int(request.POST['course'])
if not Status.objects.get(course=course_id, user=request.user.profile, role="student"):
rel = Status(course=course_id, user=request.user.profile,
role="student")
rel.save()
结果是
ValueError: Cannot assign "1": "Status.course" must be a "Course" instance.
我知道如果我做这样的事情,这是可能的:
course = Course.objects.get(pk=request.POST['course'])
rel = Status(course=course, user=request.user.profile,
role="student")
但通过这种方式,我从DB中请求课程对象(分配后,我不需要这个)。我想这是开销
可以分配一个只有PK的相关对象,而不向DB询问此对象?您在这里遇到了问题:
if not Status.objects.get(**course=course_id**, user=request.user.profile, role="student"):
Status需要一个couse实例,而您正在传递一个id。请输入您要执行的操作:
course_id = int(request.POST['course'])
if not Status.objects.get(course__pk=course_instance, user=request.user.profile, role="student"):
rel = Status(course=course_id, user=request.user.profile,
role="student")
rel.save()
你为什么不直接使用模型呢?docs:我需要在这个“辅助”表中使用其他字段,所以在我看来,没有其他方法可以做到这一点。我已经知道这一点(在问题的第二部分中,我是认真的)。我问,有没有办法不向DB询问对象?我不需要实际的课程对象,所以从DB询问这个对象是非常困难的,但是如果你需要检查这个课程,你需要的状态是模型所要求的。你可以做的另一件事是在编辑课程时检查pk