2010-07-27 2 views
5

i models.py içinde bu modelleri yazdım:Bir django sorgusu yazmak ve veritabanının bir isabetiyle ilgili nesneleri geri almak!

 
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() 

şimdi onların kullanıcıların belli bir beceri var veritabanından bu Works almak ve onlarla bir html işlemek istiyorum.

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

ama o html olarak göstermek istedik başka bir şey vardır: i views.py bu kod yazmak ben bu çalışma ve hünerlerini kullanıcının FIRST_NAME göstermek istiyorum. select_related() kullandım, ancak sadece first_name gösterebiliyorum ama kullanıcının becerilerine ulaşamıyorum.

Çalışmaları ve kullanıcı gibi diğer ekstra bilgileri almak için en uygun soruyu yazmak istiyorum! Kod darbe gibi:

şablon works.html (i cihazın kullanım becerilerini almak için her iş için veritabanı vurmak istemiyorum):

 
{% 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 %} 

cevap

3

Muhtemelen tekrar bir göz asla, ama yine de cevap vermeye çalışacağım. Bunun çalışması gerektiğini düşünürdüm

:

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

Teşekkür :) Ben ona baktım. – Mehran