Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在创建不询问DB的相关对象时,是否可以将PK用作FK?_Python_Django_Django Models - Fatal编程技术网

Python 在创建不询问DB的相关对象时,是否可以将PK用作FK?

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

我试图使用这段代码创建一个新的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="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