(Django 2. +版)
我想在模型copy()
中实现 BlogPost
方法,
根据以下规范从该模型(对象)创建完整副本:
复制整个帖子及其所有评论
将日期创建设置为复制的日期和时间
最后返回新博客帖子(已复制)ID
我的模特:
from django.db import models
from django.utils import timezone
from copy import copy, deepcopy
class Author(models.Model):
name = models.TextField(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(default=timezone.now)
def copy(self):
pass
class Comment(models.Model):
blog_post = models.ForeignKey(BlogPost, on_delete=models.CASCADE)
text = models.CharField(max_length=500)
例如,我们有:
对此帖子使用复制方法后:
我们有一位作者有2条帖子和6条评论(每个帖子有3条单独的评论)
答案 0 :(得分:1)
我会做这样的事情:
def copy(self):
blog_new = BlogPost()
blog_new.title=self.title
blog_new.body = self.body
blog_new.author = self.author
blog_new.date_created = self.date_created
blog_new.save()
for comment in self.comment_set.all():
comment.id = None
comment.blog_post = blog_new
comment.save()