从外交关系django获取id

时间:2016-06-02 02:21:56

标签: python django

我想获得一个ForeignKey关系的id或pk post_comment 但是我已经尝试了很多不同的方法来捕捉它并且我没有任何好结果,请各位给我一个牵手这种情况

  

views.py

class createComment(View):
    form_class = CommentForm
    template_name = "createComment.html"

    def get(self, request):
        form = self.form_class(None)
        return render(request, self.template_name, {'form':form})

    def post(self, request):
        obj = self.form_class(None)
        obj.title_comment = self.request.POST['title_comment']
        obj.body_comment = self.request.POST['body_comment']
        obj.post_comment = self.pk
        obj.save()
  

models.py

class Comment(models.Model):
    user_comment = models.ForeignKey("auth.User")
    title_comment = models.CharField(max_length=50)
    body_comment = models.TextField()
    timestamp_comment = models.DateTimeField(auto_now=True)
    post_comment = models.ForeignKey("Post", null=True)
    status_comment = models.BooleanField(default=True)

    def __unicode__(self):
        return unicode(self.title_comment)

    def __str__(self):
        return self.title_comment

2 个答案:

答案 0 :(得分:0)

您可以在网址中传递主键,然后将其作为一种方式在您的课程中使用。

kwargs.get(pk name)

您可以将帖子更改为:

def post(self, request, *args, **kwargs)

然后,您不能只指定obj.post_comment = kwargs.get(pk)实际获取对象。

Post.objects.get(pk = pk)

您可能还想考虑为模型字段将fieldname_comment重命名为fieldname。在_comment模型中的每个字段上都有Comment似乎有点多余。

答案 1 :(得分:0)

我不知道基于类的视图是如何工作的,但是我可以告诉你self.pk在基于类的视图中不存在,你会尝试获取表单实例并从此实例中获取I' d字段......