【问题标题】:Howto copy object from model A to model B如何将对象从模型 A 复制到模型 B
【发布时间】:2012-05-22 07:25:50
【问题描述】:

我有这个模型类:

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

class ArticleArchive(models.Model):
    [same fields as Artilce model]

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

articles = Article.objects.filter(date__year=2011)
for art in articles:
    [and there moving objects]

怎么做?

【问题讨论】:

    标签: django django-models


    【解决方案1】:
    articles = Article.objects.filter(date__year=2011).values()
    for art in articles:
        ArticleArchive.objects.create(**art)
    

    【讨论】:

    • +1 创建,但严格来说,这是复制行而不是移动它们。
    • 为了更好的性能,最好使用ArticleArchive.objects.bulk_create(...)
    【解决方案2】:

    为了更好的性能,最好使用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)
    

    然后,如果您想从原始表中删除文章(可选):

    Article.objects.filter(date__year=2011).delete()
    

    【讨论】:

      【解决方案3】:

      我似乎无法理解您的问题的核心,但您可以在循环中简单地执行此操作:

      obj, created = ArticleArchive.objects.get_or_create( your fields )
      

      【讨论】:

        猜你喜欢
        • 2016-04-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-23
        • 1970-01-01
        • 1970-01-01
        • 2017-11-23
        相关资源
        最近更新 更多