django 复制模型示例并更新新副本中的字段

rlcwz9us  于 2023-02-05  发布在  Go
关注(0)|答案(1)|浏览(121)

这是我的模型。我想用copy函数从我的模型中复制一份。并将created_time更新到这个时间,最终返回id后的内容。

from django.db import models
from django.utils import timezone

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(self):
        blog = BlogPost.objects.get(pk=self.pk)
        comments = blog.comment_set.all()

        blog.pk = None
        blog.save()

        for comment in comments:
            comment.pk = None
            comment.blog_post = blog
            comment.save()
        return blog.id

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

我还希望复制功能,使从职位和评论的副本,你能帮我纠正我的代码和更新时间在我的功能。

v9tzhpje

v9tzhpje1#

直觉

您希望将新复制的博客文章的date_created更新为timezone.now(),而不是旧博客文章时间的date_created,对吗?
我猜它没有更新的原因,是因为当你做blog.pk = Noneblog.date_created仍然存在,所以即使你做blog.save()blog.date_created仍然是旧的值。

溶液

blog.pk = None
blog.date_created = timezone.now() # Update the date_created to the current time
blog.save()

相关问题