【问题标题】:Copy a model instance and update a filed in new copy复制模型实例并更新新副本中的文件
【发布时间】:2023-02-04 15:48:09
【问题描述】:

这是我的模型。我想使用 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)

我还想要复制功能从 post 和 cmets 复制一份,你能帮我更正我的代码并更新我的功能中的时间吗?

【问题讨论】:

    标签: python django django-models


    【解决方案1】:

    直觉

    您想将新复制博文的date_created更新为timezone.now(),而不是旧博文时间的date_created,对吗?

    我猜它没有更新的原因是因为当你执行blog.pk = None时,blog.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()
    

    【讨论】:

      猜你喜欢
      • 2016-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-04
      • 1970-01-01
      • 1970-01-01
      • 2011-01-27
      • 2014-12-04
      相关资源
      最近更新 更多