Как определить метод копирования в моделях Django - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть три модели для блога, показанные ударом:

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)

Я хочу определить copy () метод для модели BlogPost, который копирует экземпляр BlogPost с copieng related комментарий экземпляров.как я могу это сделать?

1 Ответ

0 голосов
/ 12 сентября 2018

Вы можете перебирать связанные комментарии данного экземпляра BlogPost и делать копию каждого комментария, обнуляя его атрибут pk, затем присваивая blog_post внешний ключ self и сохраняя.

def copy(self, post):
    for comment in post.comment_set.all():
        comment.pk = None
        comment.blog_post = self
        comment.save()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...