0
views.py;DjangoでQuerysetsを使用するForLoopsの間違った反復
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)
role = models.CharField(max_length=50)
template.html:
{% for z in mem %}
<div class="jumbotron">
<div class="jumbo2">
<form method="POST" class="post-form"> {% csrf_token %}
<p id="name"><b>Groups name:</b> {{z.group}}</p><br>
{% for member in z.group.members.all %}
<p><b>Member:</b> {{member.name}}
{% if z.person.name == member.name %}
- {{z.role}}</p>
{% endif %}
{% endfor %}
</form>
</div>
</div>
{% endfor %}
私はグループを作成するとき、私はグループにユーザーを追加するとき、私の役割は、 "チームリーダー" であります彼は役割が "Noob"です。私はグループのすべてのメンバーとその役割を表示したい。問題がある:私の実際の出力は次のようになります。
damian - Team leader
test <- and no role, but should be "Noob"
何私が取得したい:誰もがこの問題を解決する方法をknwo
damian - Team Leader
test - Noob
? 助けてくれてありがとう!
どのようにですか?私はモデルのメンバーにプロパティ "ロール"を追加できません。それとも、私はあなたを理解していないかもしれません。 – Damian
申し訳ありませんが、私はメンバ変数名とメンバシップモデルと混同しています。ここを見てください:http://stackoverflow.com/questions/3368442/how-do-i-access-the-properties-of-a-many-to-many-through-table-from-a-django-tそれは見えますあなたの質問に非常によく似ていて、私が提供できるものよりも良い答えになるでしょう。 – xthestreams
よろしくお願いします。 – Damian