繁体   English   中英

如何使用 django 中的 ManyToMany 访问另一个 model 或表的属性

[英]How to access to attrbuite of another model or table using ManyToMany in django

拜托我需要你的帮忙。 如何使用 ManyToMany 访问另一个 model 或表的属性

我需要通过此方法获取数据,但未检索到

---=> 这是 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))


----=> 成功。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 %}

由于您具有多对多关系,因此每个参与者都可以有多个任务和用户。 因此,获取(可能)多个相关对象之一的属性是没有意义的。

在 Participer model 中将 ManyToMany 更改为 ForeignKey,或者遍历模板中的所有相关对象。 类似的东西(我没有测试这段代码):

{% for parti in participers %}
    {% for benevole in parti.id_benevole.all %}
        {{ benevole.username }}
    {% endfor %}
{% endfor %}

从您给 model 字段的名称来看,我认为从 ManyToMany 切换到 ForeignKey 是您最好的选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM