2010-11-01 10 views
8

मार के बिना प्रवेश ForeignKey मूल्य मैं बहुत की तरह एक Django मॉडल है:Django डेटाबेस

class Profile_Tag(models.Model): 
    profile = models.ForeignKey(Profile) 
    tag = models.ForeignKey(Tag) 

और इतने की तरह एक दृश्य:

pts = Profile_Tag.objects.all() 
for pt in pts: 
    print pt.profile.id 

वहाँ से टकराने के बिना प्रोफ़ाइल foreignKey उपयोग करने के लिए किसी भी तरह से है डेटाबेस हर बार? मैं प्रोफाइल टेबल से पूछताछ नहीं करना चाहता हूं। मैं सिर्फ प्रोफाइल_Tag तालिका से आईडी को पकड़ना चाहता हूं।

pt_ids = Profile_Tag.objects.values_list('profile', flat=True) 

इस आईडी की आप सूची प्रदान करेगा:

+1

आप इसे "हिट" डेटाबेस कैसे जानते हैं? ओआरएम परत के साथ-साथ डेटाबेस दोनों में व्यापक कैश प्रबंधन है। –

+0

ठीक है, किसी और को यह पढ़ने और लॉट के सवाल का जवाब देने के लिए ... यह Django 1.4 (कम से कम) में एक डीबी हिट करता है। आप क्वेरी में सभी प्रश्नों और 'pt.profile.id' परिणामों को देखने के लिए डेटाबेस लॉगिंग चालू कर सकते हैं जबकि' pt.profile_id' नहीं है। उनके लिए '.id' पर कॉल करना संभव है, न कि परिणामस्वरूप हिट हो सकता है, इसलिए यह संभव है कि यह भविष्य में बदल सकता है (या पहले से ही अलग है, मैंने नए संस्करणों का परीक्षण नहीं किया है)। –

उत्तर

10

आप कुछ इस तरह कर सकते हैं। मॉडल उदाहरण के लिए, एक और तरीका है:

pts = Profile_Tag.objects.all() 
for pt in pts: 
    print pt.profile_id 
+0

उत्कृष्ट। धन्यवाद। मुझे लगता है कि मुझे कोशिश करने के लिए सोचना चाहिए था – Jesse