Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.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
django登录用户配置文件和相关附加表单_Django_Django Models_Django Forms_Django Views - Fatal编程技术网

django登录用户配置文件和相关附加表单

django登录用户配置文件和相关附加表单,django,django-models,django-forms,django-views,Django,Django Models,Django Forms,Django Views,我对如何在Django中向登录用户附加附加表单有疑问。 我希望该附加表单属于登录用户,并且我在表单中输入的数据应位于登录用户表下。我是Django和python新手,请耐心等待,我希望我能正确地解释我想用它做什么 我将为此视图输入的数据将进入“仅登录用户”下基本上我想将此视图附加到“已登录用户”下我得到的唯一错误是 异常值: 注册\ todos.user\ id不能为空 #models class userProfile(models.Model): user = models.One

我对如何在Django中向登录用户附加附加表单有疑问。 我希望该附加表单属于登录用户,并且我在表单中输入的数据应位于登录用户表下。我是Django和python新手,请耐心等待,我希望我能正确地解释我想用它做什么

我将为此视图输入的数据将进入“仅登录用户”下基本上我想将此视图附加到“已登录用户”下我得到的唯一错误是 异常值:

注册\ todos.user\ id不能为空

#models

class userProfile(models.Model):
    user = models.OneToOneField(User)
    birth =models.DateField()
    name = models.CharField(max_length=100)
    def __unicode__(self):
        return self.name



class todos(models.Model):
    user     = models.ForeignKey(User)
    title    = models.CharField(max_length=100)
    created  = models.DateField()
    time     = models.TimeField()
    def __unicode__(self):
            return unicode(self.user)

#forms   additional form for todos  
    class formtodos(ModelForm):
        title       = forms.CharField(label=(u'Todo'))
        created     = forms.DateField(label=(u'Date'))
        time        = forms.TimeField(label=(u'Time'))
        #user        = forms.CharField(label=(u'username'))
            class Meta:
               model = todos
               exclude=('user',) 
#view  
 def modeltodo(request):
if request.user.is_authenticated(): 
    todos.objects.filter(user=request.user)
if request.method == 'POST':
    form =formtodos(request.POST)
    if form.is_valid():# All validation rules pass
        todoss = form.save(commit=False)
        todoss.created_by = request.user
        form.save()
        return HttpResponseRedirect('/profile/')
else:
    form = formtodos() # An unbound form

context = {'form':form}
return render_to_response('todo.html', context,    context_instance=RequestContext(request))

您已经在表单中指定了
exclude=('user',)
。这意味着,当您尝试保存表单时,不存在导致错误的
用户id
。您可能希望将其放在
save()之前
call:
todoss.user=request.user

非常感谢这让我很沮丧,因为我错过了这个:)你能提供一些文档链接让我很容易理解这个概念吗:)好的,你需要的一切都应该在django文档中:基本上,表单中的字段将1-1映射到你的属性模型当您为todoss对象创建表单时(顺便说一句,您应该使用标准命名约定并将其更改为Todo),您排除了
user
字段(显然您希望这是
request.user
,并且不希望用户能够更改此字段)。但是,当您运行
form.save()
时,表单缺少导致错误的用户数据。提供此选项可以避免错误。