Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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 Django:通过ModelForm创建帖子时,如何将用户与已创建的帖子相关联_Python_Django_Django Models - Fatal编程技术网

Python Django:通过ModelForm创建帖子时,如何将用户与已创建的帖子相关联

Python Django:通过ModelForm创建帖子时,如何将用户与已创建的帖子相关联,python,django,django-models,Python,Django,Django Models,我创建了一个普通的Django posts应用程序,它基本上让用户创建帖子及其内容。 现在的问题是,我在forms.py中将createpost表单实现为ModelForm。现在,如果它不是一个ModelForm而只是一个html表单,我会使用request.POST.get('data') 但现在我用 class PostForm(forms.ModelForm): class Meta: model = Post fields = ( 'title',

我创建了一个普通的Django posts应用程序,它基本上让用户创建帖子及其内容。 现在的问题是,我在forms.py中将createpost表单实现为
ModelForm
。现在,如果它不是一个
ModelForm
而只是一个html表单,我会使用
request.POST.get('data')
但现在我用

class PostForm(forms.ModelForm):
class Meta:
    model = Post
    fields = (
        'title',
        'content',
        'image',
    )
Models.py

class Post(models.Model):
    title = models.CharField(max_length=100)
    image = models.ImageField(null=True,blank=True)
    content = models.TextField()
    user = models.ForeignKey(User,on_delete=models.CASCADE,null=True)
Views.py

def create(request):
    form = PostForm(request.POST or None)
    if form.is_valid():
        instance = form.save(commit=False)
        instance.save()
        return HttpResponseRedirect('/home')
    return render(request,'create.html',{'form':form})

如何将用户与创建的帖子关联?

您只需将用户分配到两个保存功能之间的实例:

instance = form.save(commit=False)
instance.user = request.user
instance.save()

你确定?我不必在forms.py中做任何更改,因为在你说了之后,它说用户不是定义的。实际上,我还添加了
如果用户不是None和user。是否处于活动状态:
为了避免匿名用户,那么它说的用户是未定义的