Django

2016-03-22 34 views
1

Üyelik ile çoktan çoğa özelliklerine nasıl erişirim For döngüsünde olmak yerine yalnızca benim üyeliği nasıl belirleyebilirim?Django

template.html:

  {% for g in gr %} 

      <div class="jumbotron"> 
      <div class="jumbo2"> 
       <form method="POST" class="post-form"> {% csrf_token %} 
       <p id="name"><b>Groups name:</b> {{g.name}}</p><br> 

       {% for membership in g.membership_set.all %} 

         <p><b>Member:</b> {{ membership.person }} - {{ membership.role }}</p>        

       {% endfor %} 






       <br> 
       <span class="desc2">Groups description:</span> 
       <p id="desc">{{g.description}}</p><br> 



       {% for membership in g.membership_set.all %} 

         {% if membership.leader == False %} 
         <button style="float: right" type="submit" name = "leave" value = "{{g.name}}" class="save btn btn-default">Leave</button> 
         {% elif membership.leader == True %} 
         <button style="float: right" type="submit" name = "delete" value = "{{g.name}}" class="save btn btn-default">Delete</button> 
         {% endif %} 

       {% endfor %} 
       </form> 
       <br><br> 
       <p></p> 



       </div> 
       </div> 

      {% endfor %} 

models.py i bazı gruptaki kullanıcınız olduğu

class Person(models.Model): 
    name = models.CharField(max_length=128) 

    def __str__(self):    # __unicode__ on Python 2 
     return self.name 


class Group(models.Model): 
    name = models.CharField(max_length=128) 
    members = models.ManyToManyField(Person, through='Membership') 
    description = models.TextField(max_length=350) 

    def __str__(self):    # __unicode__ on Python 2 
     return self.name 


class Membership(models.Model): 
    person = models.ForeignKey(Person) 
    leader = models.BooleanField(default=False) 
    group = models.ForeignKey(Group) 
    role = models.CharField(max_length=50) 

Benim düğmeleri gibi birçok displeyed edilir. Sadece 1 düğmeyi görüntülemek istiyorum ve yalnızca bu gruptaki üyelerim için ForLoop'u kesinleştirmem gerekiyor. Bunu nasıl yapabilirim?

+0

"Üyelikim" ile ne demek istiyorsunuz? Tamamen belirsiz. Modellerinizi de gönderebilirsiniz. –

+0

Yani, {% g.membership_set.all%} üyeliği döngüsü, bazı gruptaki tüm üyeliklerden geçiyor. İşte bu yüzden kontrol etmek istediğimde, üyeliğim (bu gruptaki insanım) Doğru veya Yanlış alanında lider bir alana sahip olmaktı, ancak bu döngü şu an sahip olduğum şey, bu gruptaki bütün üyelere (tüm üyeliklere) giriyor. Tamam, modelleri değiştirip ekliyorum – Damian

cevap

0

Bunu yalnızca standart şablon kodunu kullanarak yapabileceğinizi düşünmüyorum. Öyle gibi üyeliklerini filtreleyerek Membership nesneyi almak gerekir:

membership = my_person.membership_set.get(group=my_group) 

şablonda Bunu yapmak için, my_person nesne üzerinde çalışıyor ve parametre olarak my_group nesneyi sürer own template filter yazmak zorunda kalacaktı. Filtre daha sonra yukarıdaki sorguyu uygulayabilir ve üyelik nesnesini iade edebilir.

{% with membership=my_person|get_group_membership:g %} 
    {% if membership.leader == False %} 
     <button style="float: right" type="submit" name = "leave" value = "{{g.name}}" class="save btn btn-default">Leave</button> 
    {% elif membership.leader == True %} 
     <button style="float: right" type="submit" name = "delete" value = "{{g.name}}" class="save btn btn-default">Delete</button> 
    {% endif %} 
{% endwith %}