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)
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. –
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
Dürüst olmak gerekirse, sorunun ne olduğunu anlamadım bile. Ne görmek istiyorsun ve şu anda ne görüyorsun? – Selcuk