【问题标题】:Can't assign a value (user id) to a ForeignKey field无法为 ForeignKey 字段分配值(用户 ID)
【发布时间】:2012-11-15 13:23:36
【问题描述】:

我收到以下错误: Cannot assign "<django.db.models.fields.related.ForeignKey>": "Worry.user" must be a "User" instance.

我试图将当前用户的 id 分配给我刚刚创建的对象。

这是我的models.py的一部分:

from django.contrib.auth.models import User  
from django.forms import ModelForm  
from django.db import models  

    class UserForm (ModelForm) :  
        class Meta:  
            model = User        
    class Worry(models.Model) :    
        user = models.ForeignKey(User) #Many worries to 1 user relation

这是我的views.py的一部分:

从 django.db 导入模型
从 django.shortcuts 导入 render_to_response、重定向、get_object_or_404
从 django.template 导入 RequestContext
从 django.contrib.auth.models 导入用户
从 holaProy.models 导入 UserForm、Worry、WorryForm、Statistics、StatisticsForm
def 担心添加(请求):
    form = WorryForm(request.POST 或无)
    如果 form.is_valid():
        wform.user = models.ForeignKey('User') #这是我认为的问题
        wform.save()
        返回重定向(索引)
    return render_to_response ('holaProy/worry_add.html', {'worry_form': form}, context_instance = RequestContext(request))

我应该如何做才能成功地将当前用户 ID 分配给实际担忧实例的“用户”字段?

【问题讨论】:

    标签: python django django-models


    【解决方案1】:

    问题确实在于那一行:

    wform.user = models.ForeignKey('User')
    

    wform.user 应设置为 User 实例。像这样的:

    user = request.user    # Retrieve proper user according to your needs
    wform.user = user
    

    【讨论】:

    • 工作就像一个魅力!谢谢@mipadi。
    【解决方案2】:

    这就是你遇到问题的地方。

    基本上,您正在搜索一个字符串。您需要先获取实际的数据库对象。 试试这个:

    User = User.objects.get(pk='User')
    wform.user = models.ForeignKey('User')  #Now User refers to the database object, not a string
    

    【讨论】:

      【解决方案3】:

      试试:

      def worry_add(request):
          form = WorryForm(request.POST or None)
          if request.method == 'POST' and form.is_valid():
              worry = form.save(commit=False)
              worry.user = #assign this to an instance of a User object
              worry.save()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-23
        • 1970-01-01
        • 2020-02-01
        • 1970-01-01
        • 2021-02-03
        • 2016-03-09
        • 2017-01-07
        相关资源
        最近更新 更多