Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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从views.py动态获取PK_Python_Django - Fatal编程技术网

Python Django从views.py动态获取PK

Python Django从views.py动态获取PK,python,django,Python,Django,我有一个视图,可以呈现注释表单和模板: 视图.py def news(request): if request.method == "POST": form = CommentForm(request.POST) if form.is_valid(): comment = form.save(commit=False) comment.post = Article.objects.get(pk=2)

我有一个视图,可以呈现注释表单和模板:

视图.py

def news(request):
    if request.method == "POST":
        form = CommentForm(request.POST)
        if form.is_valid():
            comment = form.save(commit=False)
            comment.post = Article.objects.get(pk=2)
            print(comment.post)
            comment.author = request.user.username
            comment.save()
            return HttpResponseRedirect('')
    else:
        form = CommentForm()
    return render(request, '../templates/news.html', context={"form": form})

class Comment(models.Model):
    post = models.ForeignKey(Article, on_delete=models.CASCADE, related_name='comments', blank=True)
    author = models.TextField()
    text = models.TextField()

    def __str__(self):
        return self.text
class CommentForm(ModelForm):
    class Meta:
        model = Comment
        fields = ('text',)
型号.py

def news(request):
    if request.method == "POST":
        form = CommentForm(request.POST)
        if form.is_valid():
            comment = form.save(commit=False)
            comment.post = Article.objects.get(pk=2)
            print(comment.post)
            comment.author = request.user.username
            comment.save()
            return HttpResponseRedirect('')
    else:
        form = CommentForm()
    return render(request, '../templates/news.html', context={"form": form})

class Comment(models.Model):
    post = models.ForeignKey(Article, on_delete=models.CASCADE, related_name='comments', blank=True)
    author = models.TextField()
    text = models.TextField()

    def __str__(self):
        return self.text
class CommentForm(ModelForm):
    class Meta:
        model = Comment
        fields = ('text',)
forms.py

def news(request):
    if request.method == "POST":
        form = CommentForm(request.POST)
        if form.is_valid():
            comment = form.save(commit=False)
            comment.post = Article.objects.get(pk=2)
            print(comment.post)
            comment.author = request.user.username
            comment.save()
            return HttpResponseRedirect('')
    else:
        form = CommentForm()
    return render(request, '../templates/news.html', context={"form": form})

class Comment(models.Model):
    post = models.ForeignKey(Article, on_delete=models.CASCADE, related_name='comments', blank=True)
    author = models.TextField()
    text = models.TextField()

    def __str__(self):
        return self.text
class CommentForm(ModelForm):
    class Meta:
        model = Comment
        fields = ('text',)
在views.py中,comment.post被分配给文章对象,我希望动态应用pk。我尝试在模板中这样做,将{{article.pk}}放在模板中输出文章对象的正确pk,但我不确定如何将其应用到表单中

模板看起来很简单:文章对象,下面是评论表单


问题很简单,我希望news(request)函数动态应用当前文章对象的pk,以便将评论转到正确的帖子。

如果路径是唯一的,您可以使用该路径,也可以添加一个隐藏字段并将文章pk设置为值:

<input name="post" type="hidden" value={{ article.pk }} />

您可以从视图中的验证数据访问它。

您可以通过post请求检索
pk
,只需在表单中添加一个输入字段,其中包含news.pk作为值。