2012-05-22 10 views
5

私は、このモデルクラスがあります。ハウツーモデルBにモデルAからコピー対象

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

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

と私は記事のテーブルからオブジェクトを取得し、テーブルをArticleArchiveするためにそれを移動したいの:

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

どのようにそれ?

答えて

9
articles = Article.objects.filter(date__year=2011).values() 
for art in articles: 
    ArticleArchive.objects.create(**art) 
+2

+1は作成しますが、厳密に言うと、これは移動しない行を複製しています。 –

+1

パフォーマンスを向上させるには、 'ArticleArchive.objects.bulk_create(...)'を使用する方が良いでしょう。 – Uri

1

私はあなたの問題の地殻を取得するように見えることができませんでしたが、あなたはループでこれを簡単な行うことができます。

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

パフォーマンスを向上させるために、それは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() 
関連する問題