Django: Почему я не могу получить доступ к дополнительным полям в отношениях Many to Many с помощью _set.all в шаблонах. Что не так?
Я хочу вывести дополнительное поле is_valid
класса GroupMember
(отношение ManytoMany с классом Group
). В шаблонах я делаю:
{% for field in user.groupmember_set.all %}{{ field.is_valid }}<br>{% endfor %}
Но ничего не отображается. Где же проблема? Соответствующий код приведен ниже
models.py
from django.contrib.auth.models import User
class Group(models.Model):
name = models.CharField(max_length=255, unique=True)
members = models.ManyToManyField(User,through="GroupMember")
def __str__(self):
return self.name
class GroupMember(models.Model):
user = models.ForeignKey(User,related_name='user_groups',on_delete=models.CASCADE,)
group = models.ForeignKey(Group, related_name="memberships",on_delete=models.CASCADE,)
is_valid = models.BooleanField(default=False)
def __str__(self):
return self.user.username
class Meta:
unique_together = ("group", "user")
views.py
class SingleGroup(DetailView):
model = Group
urls.py
path("groups/<pk>/",views.SingleGroup.as_view(),name="single"),
template: groups/<pk>
{% for field in user.groupmember_set.all %}{{ field.is_valid }}<br>{% endfor %}
Обращение через объект Group к записям GroupMember. Нужно ли вам это? Замените bboard на имя папки, в которой лежат ваши шаблоны. У меня так: templates/bboard, которые находятся в папке приложения.
views.py
class SingleGroup(DetailView):
model = Group
template_name = 'bboard/templ.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
print(context)
return context
templ.html
{% for aaa in group.memberships.all %}
<p>{{ aaa }}</p>
{% endfor %}