【问题标题】:how to define a copy method in django models如何在 django 模型中定义复制方法
【发布时间】:2019-02-17 03:04:37
【问题描述】:

我的博客有三个模型,如下所示:

class Author(models.Model):
name = models.CharField(max_length = 50)

class BlogPost(models.Model):
    title = models.CharField(max_length = 250)
    body = models.TextField()   
    author = models.ForeignKey(Author,on_delete = models.CASCADE)
    date_created = models.DateTimeField(auto_now_add = True)

    def copy():
        pass

class Comment(models.Model):
    blog_post = models.ForeignKey(BlogPost, on_delete = models.CASCADE) 
    text = models.TextField(max_length = 500)

我想为 BlogPost 模型定义一个 copy() 方法,该方法复制一个带有与复制相关的 comment 实例的 BlogPost 实例。我该怎么做?

【问题讨论】:

    标签: django python-3.x model


    【解决方案1】:

    您可以遍历给定 BlogPost 实例的相关 cmets,并通过将其 pk 属性设为空来复制每条评论,然后将 blog_post 外键分配给 self 并保存。

    def copy(self, post):
        for comment in post.comment_set.all():
            comment.pk = None
            comment.blog_post = self
            comment.save()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-26
      • 2013-04-18
      • 2011-11-17
      • 1970-01-01
      • 2019-08-20
      • 2017-05-03
      • 2019-10-18
      • 1970-01-01
      相关资源
      最近更新 更多