2012-05-22 13 views
5

मॉडल करने के लिए मैं इस मॉडल श्रेणियां होती हैं:Howto प्रति वस्तु बी

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, लेकिन कड़ाई से बोलते हुए, यह उन पंक्तियों को डुप्लिकेट कर रहा है जो उन्हें नहीं ले जा रहे हैं। –

+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() 
संबंधित मुद्दे