में वस्तुओं लिस्टिंग मैं निम्नलिखित मॉडल:Django प्रीफ़ेच जब व्यवस्थापक
class UserProfile(models.Model):
name = models.CharField()
info = models.OneToOneField(UserInfo, related_name='user')
class UserInfo(models.Model):
def __unicode__(self):
return self.user.__unicode__() + self.age
age = models.IntegerField()
class Ticket(models.Model):
userinfo = models.ForeignKey(UserInfo)
समस्या टिकट व्यवस्थापक इंटरफ़ेस में है। टिकट का userinfo फ़ील्ड ड्रॉपडाउन के रूप में प्रस्तुत किया जाता है। यदि डेटाबेस में बहुत सारे UserInfo हैं, तो उनमें से प्रत्येक डेटाबेस का नाम बनाने के लिए डेटाबेस (UserProfile) को एक एकल कॉल करता है।
जब मैं UserInfo ड्रॉपडाउन को प्रस्तुत कर रहा हूं तो संबंधित उपयोगकर्ता प्रोफाइल को प्रीफ़ेच करने के लिए मैं व्यवस्थापक (या कोई विजेट) कैसे कह सकता हूं?
class TicketAdminForm(forms.ModelForm):
class Meta:
model = Ticket
userinfo = forms.ModelChoiceField(queryset=UserInfo.objects.prefetch_related('user').all())
class TicketAdmin(admin.ModelAdmin):
form = TicketAdminForm
admin.site.register(Ticket, TicketAdmin)
अब जरूरत मॉडल एक एक एसक्यूएल क्वेरी के बजाय कई प्रश्नों के रूप में प्रीफ़ेच रहे हैं:
मैं
info = models.OneToOneField(UserInfo, related_name='user', prefetch_in_bulk=True)
'आपके पास अब क्या है ('__unicode__' को यूनिकोड वापस करना चाहिए, स्ट्रिंग नहीं) के बदले' वापसी यूनिकोड (" {} + {} "प्रारूप (self.user, self.age)) का उपयोग करें। –