Как получить доступ к attrbuite другой модели или таблицы с помощью ManyToMany в django
Пожалуйста, мне нужна ваша помощь. Как я могу получить доступ к атрибутам другой модели или таблицы, используя ManyToMany
Мне нужно получить данные через этот метод, но они не извлекаются
---=> это Models.py
class Mission(models.Model):
nom=models.CharField(max_length=50,null=False,blank=False)
description=models.CharField(max_length=150,null=False,blank=False)
date_publier=models.DateTimeField()
class Participer(models.Model):
id_benevole = models.ManyToManyField(User)
id_mission = models.ManyToManyField(Mission)
est_participer = models.BooleanField(default=False)
class User(AbstractUser):
est_association = models.BooleanField(default=False)
est_benevolat = models.BooleanField(default=False)
username = models.CharField(max_length=30,unique=True)
email = models.EmailField()
password1 = models.CharField(max_length=20,null=True)
password2 = models.CharField(max_length=20,null=True)
class ProfileBenevole(models.Model):
user = models.OneToOneField(User,related_name="benevole", on_delete = models.CASCADE,
primary_key = True)
photo_profile = models.ImageField( upload_to='uploads/images',null=True,blank=True)
nomComplet = models.CharField(max_length=50,null=True)
--=> это Views.py
def demande_participer(request):
participers=Participer.objects.all()
return render(request,'Association/success.html', {'participers':participers},print(participers))
----=> success.html
{% extends 'home/base.html'%}
{% block content %}{% load static %}
<div class=" mt-4 pb-5">
<h1 style="text-align:center;">Confirmation de Participation </h1>
<div class="container">
<div class="card mt-5 pb-5">
{% for parti in participers %}
{{parti.mission_id.nom}}
<br>
{{parti.id_benevole.username}}
<br>
{{parti.est_participer}}
{% endfor%}
</div>
<a class="btn btn-secondary mt-2 " href="{% url 'benevole' %}">Retour </a>
</div>
</div>
{% endblock content %}
Поскольку у вас есть отношение ManyToMany, у каждого участника может быть несколько миссий и пользователей. Поэтому не имеет смысла получать атрибут одного из (потенциально) нескольких связанных объектов.
Либо измените ManyToMany на ForeignKey в вашей модели Participer, либо пройдитесь по всем связанным объектам в вашем шаблоне. Что-то вроде (я не тестировал этот код):
{% for parti in participers %}
{% for benevole in parti.id_benevole.all %}
{{ benevole.username }}
{% endfor %}
{% endfor %}
Судя по именам, которые вы даете полям вашей модели, я думаю, что переход от ManyToMany к ForeignKey является здесь лучшим вариантом.