如何将对象从模型A复制到模型B.

Nip*_*ips 5 django django-models

我有这个模型类:

class Article(models.Model):
    [many fields]

class ArticleArchive(models.Model):
    [same fields as Artilce model]
Run Code Online (Sandbox Code Playgroud)

我想从Article表中获取对象并将其移动到ArticleArchive表:

articles = Article.objects.filter(date__year=2011)
for art in articles:
    [and there moving objects]
Run Code Online (Sandbox Code Playgroud)

怎么做?

Ign*_*ams 10

articles = Article.objects.filter(date__year=2011).values()
for art in articles:
    ArticleArchive.objects.create(**art)
Run Code Online (Sandbox Code Playgroud)

  • +1用于创建,但严格来说,这是重复不移动它们的行. (3认同)
  • 为了获得更好的性能,最好使用`ArticleArchive.objects.bulk_create(...)`. (2认同)

Uri*_*Uri 6

为了获得更好的性能,最好使用ArticleArchive.objects.bulk_create(...):

articles = list()
for article in Article.objects.filter(date__year=2011).values():
    articles.append(ArticleArchive(**article))
if (len(articles) > 0):
    ArticleArchive.objects.bulk_create(articles)
Run Code Online (Sandbox Code Playgroud)

然后,如果要删除原始表中的文章(可选):

Article.objects.filter(date__year=2011).delete()
Run Code Online (Sandbox Code Playgroud)