2016-03-20 10 views
0

forループに1つのボタンを表示したいのですが、私は多くのボタンをグループとして作成しています。だから、私がメンバーの一人である3つのグループを作ったとき、私はすべてのグループの下に3つのボタンを持っていました。問題は、私のコードでは、この最初のループですが、私はこれを解決する方法がわかりません。Groupsモデル、ManyToManyフィールドで不正なfor-loopになっています

問題は、ループである:

{% for z in mem %} 

私はそれのようだ任意のメンバーシップを作成する場合:

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

任意の助けをありがとう!

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

なぜあなたはまだ読めない2文字の変数名の使用を主張していますか?変数がグループを表す場合、 'gr'ではなく' groups'と呼んでください。私たちは80年代に住んでいませんが、コンピュータにはフルワード変数名のための十分な記憶があります。 –

+0

申し訳ありませんが、私の最初のアプリなので、自分でやろうとしています。しかし、私は未来のために自分自身を正していきます。とにかく、この問題を解決する方法を知っていますか? – Damian

+0

正直なところ私は問題が何かを理解していませんでした。あなたは何を目にしたいのですか?あなたは現在何を見ていますか? – Selcuk

答えて

0

[OK]を、私は私のグループおよび使用される唯一のメンバーシップのオブジェクトを置き換えます。ここに私の作業コードがあります:

  {% 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 %} 
関連する問題