Pereiti prie turinio

Django susijusių įrašų atvaizdavimas template


Rekomenduojami pranešimai

Sveiki,

 

Reikia django pagalbos. Turiu kelius modelius. Tarpusavyje jie yra surišti Foreignkey. Su paprastu ciklu aš galiu išmesti visus "Competence" įrašus, tačiau kaip padaryti, kad prie kiekvieno išmesto Competence įrašo išmestu ir jam priklausančius Subcompetence įrašus ? Jeigu bandau į cikla įdėti dar vieną ciklą pvz:

{% for comp in competence  %} 
{{ comp.name }}
   {% for sub in subcompetence %}
       {{ sub.name }}
   {% endfor %}
{% endfor %}

 

Man išmeta visus Subcompetence įrašus kurie yra lentoje. O man reikia, kad prie kiekvieno Competence išmestu tik susijusius Subcompetence įrašus. Bandžiau dar cikle naudoti competence.subcompetence_set.all , bet visai jau nieko nebeišmeta. Gal galite paprotinti.

 

Modeliai:

class Competence(models.Model):
   name = models.CharField(max_length=100)
   description = models.TextField()
   def __unicode__(self):
       return self.name


class Subcompetence(models.Model):
   competencies = models.ForeignKey(Competencies)
   name = models.CharField(max_length=100)
   description = models.TextField()

   def __unicode__(self):
       return self.name

 

Views:

def competence(request):
   context = RequestContext(request)
   competence = Competence.objects.all()
   subcompetence = Subcompetence.objects.all()
   context_dict = {'competence': competence, 'subcompetence': subcompetence }
   return render_to_response('portfelis/competence.html', context_dict, context)

 

index.html

<ul>
{% for su in competence %}
<li>{{ su.name }}</li>
{% endfor %}
</ul>

Nuoroda į pranešimą
Dalintis kituose puslapiuose

<ul>
{% for c in competence %}
   <li>{{ c.name }}</li>
   <ol>
   {% for s in competence.subcompetence_set.all %}
       <li>{{ s.name }}</li>
   {% endfor %}
   </ol>
{% endfor %}
</ul>

 

Šiaip jau tam nereikia atskiro modelio. Competence gali turėti ForeignKey('self') :) Nes jei po to užsimanysi daryti tris, keturis lygius atskirais modeliais, SubSubSubCompetence – ne kažką. Jei kada reiktų dar sudėtingesnių medžių iš modelių: https://github.com/django-mptt/django-mptt/ .

 

Jei duotas pavyzdys nieko nerodo, tai jau su modeliais gali būti bėda. Atsidaryk

 

./manage.py shell

 

Ir ten pabandyk tą patį dalyką. Ir apskritai, shellas – geras dalykas eksperimentams.

 

first = Competence.objects.all()[0]
first.subcompetence_set.all()

Redagavo Silke
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...