2016-03-20 17 views
0

For döngüsü için 1 düğmeyi görüntülemek istiyorum, ancak oluşturduğum kadar çok sayıda düğme grubu elde ediyorum. Yani .. üyelerden biri olduğum 3 grup oluşturduğumda, sahip olduğum her grubun altında 3 düğme var. Sorun kodumdaki bu ilk döngüde, ama bunu nasıl çözeceğimi bilmiyorum.Gruplar modeliyle django'da sorunsuz forfor döngüsü, ManyToMany alanı

Sorun döngü içinde: i herhangi üyelikleri oluşturduğunuzda

{% for z in mem %} 

bu sanki: Herhangi bir yardım için

m = Membership.objects.create(person="damian", group="name_group", leader=True)/or False 

teşekkürler!

groups.html:

{% for g in gr %} 
      <div class="jumbotron"> 
      <div class="jumbo2"> 
       <form method="POST" class="post-form"> {% csrf_token %} 
       <p id="name"><b>Group's name:</b> {{g.name}}</p><br> 

       {% for member in g.members.all %} 

        <p><b>Member:</b> {{member.name}} </p> 

       {% endfor %} 



       <br> 
       <span class="desc2">Group's description:</span> 
       <p id="desc">{{g.description}}</p><br> 
       {% for z in mem %} 
        {% if z.leader == False %} 
        <button style="float: right" type="submit" name = "leave" value = "{{g.name}}" class="save btn btn-default">Leave</button> 
        {% elif z.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> 
       {% if messages %} 
       {% for message in messages %} 
        <p>{{ message }}</p> 
       {% endfor %} 
       {% endif %} 
       </p> 

      </div> 
      </div> 



      {% endfor %} 

views.py:

cvs = Cv.objects.all() 
    cv = Cv.objects.filter(author = request.user) 
    per = Person.objects.all() 
    gr = Group.objects.filter(members__name=request.user) 
    perr = Person.objects.filter(name=request.user) 

    mem = Membership.objects.filter(group = gr, person = perr) 
    form = GroupForm() 


    context = { 
     'gr': gr, 
     'per':per, 
     'mem':mem, 
     'form': form, 
     'cvs':cvs, 
     'cv':cv, 
    } 

    return render(request, 'groups.html', context) 

models.py:

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) 
+0

Neden hala okunamayan iki karakterli değişken adlarını kullanmakta ısrar ediyorsunuz? Bir değişken grupları temsil ediyorsa, 'gr' değil 'gruplar' olarak adlandırın. 80'lerde yaşamıyoruz, bilgisayarlarda tam kelime değişken isimleri için yeterli hafıza var. –

+0

Tamam, üzgünüm, ama benim ilk uygulamam, bu yüzden kendi başıma yapmaya çalışıyorum. Ama kendim için geleceği düzeltirim. Her neyse, bu problemi nasıl kaldıracağını biliyor musun? – Damian

+0

Dürüst olmak gerekirse, sorunun ne olduğunu anlamadım bile. Ne görmek istiyorsun ve şu anda ne görüyorsun? – Selcuk

cevap

0

Tamam, benim grupları ve kullanılan tek üyelik nesneleri değiştirin. İşte benim kodum:

  {% for z in mem %} 
      <div class="jumbotron"> 
      <div class="jumbo2"> 
       <form method="POST" class="post-form"> {% csrf_token %} 
       <p id="name"><b>Group's name:</b> {{z.group}}</p><br> 

       {% for member in z.group.members.all %} 

        <p><b>Member:</b> {{member.name}} </p> 

       {% endfor %} 


       <br> 
       <span class="desc2">Group's description:</span> 
       <p id="desc">{{z.group.description}}</p><br> 


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

       </form> 
       <br><br> 
       <p> 
       </p> 

      </div> 
      </div> 

      {% endfor %}