1

我收到以下错误: 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

This is part of my views.py:

from django.db import models  
from django.shortcuts import render_to_response, redirect, get_object_or_404  
from django.template import RequestContext  
from django.contrib.auth.models import User  
from holaProy.models import UserForm, Worry, WorryForm, Statistics, StatisticsForm  
def worry_add (request):  
    form = WorryForm (request.POST or None)  
    if form.is_valid():      
        wform.user = models.ForeignKey('User')  #HERE IS THE PROBLEM I THINK
        wform.save()  
        return redirect (index)  
    return render_to_response ('holaProy/worry_add.html', {'worry_form': form}, context_instance = RequestContext(request))</code>

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

4

3 回答 3

4

确实,问题在于这一行:

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

wform.user应该设置为一个User实例。像这样的东西:

user = request.user    # Retrieve proper user according to your needs
wform.user = user
于 2012-11-27T20:28:28.553 回答
1

那就是您遇到问题的地方。

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

User = User.objects.get(pk='User')
wform.user = models.ForeignKey('User')  #Now User refers to the database object, not a string
于 2012-11-27T20:32:33.947 回答
0

尝试:

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()
于 2012-11-27T20:28:56.263 回答