django" MyModel.user"必须是"用户"实例

时间:2017-11-16 22:44:03

标签: python django

helloo

我在DJANGO应用程序中有两个函数,我想在views.py中工作,第二个函数需要第一个函数的输出才能工作。

我的views.py(之前):

@login_required(login_url="login/")
def app_details(request,slug):
        if request.method == "POST":
            b = request.user.id
            test = request.POST.get('index')
            test_path_export=test+'add/path'
            my_task_name(test,test_path_export)
            save_alg(request.user,test_path_export)
        return render(request, 'details.html'...............................

my_function_name.py

def my_function_name(input1,output1):
     ..................................
     ..................................

myalg.py

from django.contrib.auth.models import User

def save_alg(user_id,input1):
    instance = MyModel.objects.create(user=user_id, field1=input1)
     ..................................
     ..................................
    instance.save()

并且所有工作函数(my_task_name,save_alg)都可以正常工作......

现在我想从这两个函数中创建一个函数来处理某个函数,因为我想在将来使用celery添加异步任务,如果我有一个函数则很容易使用.delay。< / p>

我将my_function_name.py更改为:

def my_function_name(user_id,input1,output1):
     ..................................
     ..................................
    return save_alg(user_id,output1)      

第二次尝试

def my_function_name(user_id,input1,output1):
     ..................................
     ..................................
    save_alg(user_id,output1)      

和我的views.py:

@login_required(login_url="login/")
def app_details(request,slug):
        if request.method == "POST":
            b = request.user.id
            test = request.POST.get('index')
            test_path_export=test+'add/path'
            my_task_name(request.user,test,test_path_export)
        return render(request, 'details.html'...............................
instance = MyModel.objects.create(user=user_id, field1=input1)行中的

错误消息:

self.field.remote_field.model._meta.object_name,
ValueError: Cannot assign "28": "MyModel.user" must be a "User" instance.

我已添加:

from django.contrib.auth.models import User
import user

在所有python文件中。

任何想法如何修复此错误?

1 个答案:

答案 0 :(得分:2)

user=foo假设foo本身是User对象的实例。你传入的字符串应该是用户的ID:

instance = MyModel.objects.create(user_id=user_id, field1=input1)
                                      ^^^

传递User个对象或将user=更改为user_id=