2010-07-27 13 views
5

मैं models.py में इन मॉडलों में लिखा है:एक django क्वेरी लिखना और डेटाबेस के एक हिट में रिवर्स संबंधित ऑब्जेक्ट प्राप्त करें!

 
class User(models.Model): 
    first_name = models.CharField(max_length=80) 

class Skill(models.Model): 
    user = models.ForeignKey(User) 
    title = models.CharField(max_length=80) 
    level = models.IntegerField(default=3) 

class Work(models.Model): 
    user = models.Foriegnkey(User) 
    work_name = models.CharField(max_length=80) 
    salary = models.IntegerField() 

अब मैं डेटाबेस से उन वर्क्स जो अपने उपयोगकर्ताओं के लिए एक निश्चित कौशल है मिलता है, और उन लोगों के साथ एक एचटीएमएल प्रस्तुत करना चाहते हैं। मैं views.py में इस कोड को लिखें:

 
def show_works(request, skill): 
    works = Work.objects.select_related().filter(user__skill__title=skill) 
    return render_to_response("works.html", {'works':works}) 

लेकिन वहाँ एक और बात मैं कि html में दिखाने के लिए चाहते हैं: मैं कि काम करते हैं और अपने कौशल के उपयोगकर्ता की first_name दिखाना चाहते हैं। मैंने select_related() का उपयोग किया, लेकिन मैं केवल प्रथम_नाम दिखा सकता हूं लेकिन मैं उपयोगकर्ता के कौशल तक नहीं पहुंच सकता।

मैं काम और अन्य अतिरिक्त सूचनाओं जैसे उपयोगकर्ता और इसके उपयोगकर्ता के कौशल प्राप्त करने के लिए एक इष्टतम क्वेरी लिखना चाहता हूं! कोड झटका की तरह:

टेम्पलेट works.html (मैं नहीं हर काम के लिए डेटाबेस हिट करने के लिए अपने उपयोगकर्ता के कौशल प्राप्त करना चाहते हैं):

 
{% for work in works %} 
    
     {{work.work_name}} 
     user is : {{work.user.first_name}} 
     which has these skills: 
     {% for skill in work.user.skill %} 
      {{skill.title}} 
     {% endfor %} 
    
{% endfor %} 

उत्तर

3

आप शायद फिर से इसे देखो कभी नहीं होगा, लेकिन मैं वैसे भी इसका जवाब देने की कोशिश करूंगा।

मुझे लगता है कि है कि यह काम करना चाहिए:

{% for skill in work.user.skill_set.all %} 
    {{skill.title}} 
{% endfor %} 
+1

धन्यवाद :) मैं इसे देखा। – Mehran

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