2014-12-04 7 views
6

मेरे पास ऐसी स्थिति है जिसमें एक विशेष वर्ग की बड़ी संख्या में वस्तुओं को फिर से चालू किया जा रहा है, और वे प्रसंस्करण के लिए काफी समय लेते हैं क्योंकि मैं select_related का उपयोग कर डेटा का चयन नहीं कर सकता।django में GenericForeignKey के साथ select_related का उपयोग कैसे करें?

प्रश्न में वर्ग की तरह

नीचे
from django.contrib.contenttypes.models import ContentType 
from django.db import models 

class Offer(models.Model): 
    ... 
    object_id = models.PositiveIntegerField(db_index = True) 
    content_type = models.ForeignKey(ContentType, db_index = True) 
    content_object = generic.GenericForeignKey('content_type', 'object_id') 
    ... 

मैं नीचे की तरह select_related का उपयोग कर की कोशिश की है कुछ जाता है, लेकिन यह स्पष्ट रूप से काम नहीं करता है

offerList = Offer.objects.select_related('content_type', "content_object" 
    ).filter(content_type=ContentType.objects.get_for_model(SomeObject), 
    object_id=someobject.id) 

तो, मैं कैसे select_related GenericForeignKey साथ उपयोग कर सकते हैं django में?

+0

के संभावित डुप्लिकेट [Django: \ _related का चयन करें और GenericRelation] (http://stackoverflow.com/questions/2939552/django-select-related -और-genericrelation) –

उत्तर

10

यह select_related नहीं है जिसे आप ढूंढ रहे हैं। यह prefetch_related है, जो

जेनेरिकरेलेशन और जेनेरिकॉर्निनेकी की प्रीफेचिंग का समर्थन करता है।

इसलिए, your base command होगा:

Offer.objects.all().prefetch_related('content_object')

संबंधित मुद्दे