Ho scritto questi modelli in models.py:scrivendo una query di django e ottieni oggetti correlati al contrario in un colpo di database!
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()
ora voglio ottenere quelle opere dal database che i loro utenti hanno una certa abilità, e rendere un html con loro. scrivo questo codice in 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})
Ma c'è un'altra cosa che voglio mostrare in che HTML: voglio mostrare first_name dell'utente di quel lavoro e la sua abilità. ho usato select_related(), ma posso solo mostrare first_name ma non riesco a raggiungere le competenze dell'utente.
voglio scrivere una query ottimale per ottenere i lavori e le altre informazioni extra, come l'utente e le capacità dell'utente! come il codice colpo: (non voglio colpire database per ogni lavoro per ottenere le abilità del suo utente)
modello 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 %}
Thanks :) ho guardato. – Mehran