Копирование экземпляра модели и обновление файла в новой копии

Это моя модель. Я хочу сделать копию из моей модели с помощью функции 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)

Я также хочу, чтобы функция копирования делала копию из сообщения и комментариев, не могли бы вы помочь мне исправить мой код и обновить время в моей функции.

Интуиция

Вы хотите обновить 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()
Вернуться на верх