python - 如果在关系中使用中介类,如何访问 Django 中的多对多字段?
问题描述
我是 django 的初学者。我已经尝试过几次来解决这个问题。如果问题没有正确提出,请考虑我的错误。
我不知道我哪里错了。
模型.py
class Participant(models.Model):
user = models.OneToOneField(User,on_delete=models.CASCADE)
first_name = models.CharField(max_length=255,blank=True,null=True)
last_name = models.CharField(max_length=255,blank=True,null=True)
class Assessment(models.Model):
name = models.CharField(max_length=255)
slug = models.SlugField(blank=True)
created = models.DateTimeField(auto_now_add=True,editable=False)
modified = models.DateTimeField(auto_now=True)
class Seminar(models.Model):
topic = models.CharField(max_length=255)
date = models.DateField(null=True,blank=True)
time = models.TimeField(null=True,blank=True)
assessment = models.ManyToManyField(Assessment,blank=True,through='SeminarParticipant')
participant = models.ManyToManyField(Participant,blank=True,through='SeminarParticipant')
created = models.DateTimeField(auto_now_add=True,editable=False)
modified = models.DateTimeField(auto_now=True)
class SeminarParticipant(models.Model):
assessment = models.ForeignKey(Assessment,blank=True,on_delete=models.CASCADE)
seminar = models.ForeignKey(Seminar,blank=True,on_delete=models.CASCADE)
participant = models.ForeignKey(Participant,blank=True,on_delete=models.CASCADE)
request_time = models.PositiveIntegerField(default=0,validators=[MinValueValidator(0),])
is_survey_completed = models.BooleanField(default=False)
created = models.DateTimeField(auto_now_add=True,editable=False)
modified = models.DateTimeField(auto_now=True)
也已经尝试弄清楚这一点:
django 基于类的列表视图中的多对多 select_related
视图.py
class SeminarListView(ListView):
template_name = 'show_seminar.html'
model = Seminar
context_object_name = 'seminar'
def get_queryset(self):
queryset = Seminar.objects.prefetch_related('assessment_set').filter(participant__user=self.request.user).order_by('created')
return queryset
show_seminar.html
<div class="row mt-5">
{% for obj in seminar %}
<div class="col-sm-6">
<div class="card mt-2">
<div class="card-header">
<h4 class="text-center">{{obj.topic}}</h4>
</div>
<div class="card-body">
<a href="{%url 'seminar:question' 1 %}"><button>Go For Seminar</button></a>
</div>
<div class="card-footer">
</div>
</div>
</div>
{% endfor %}
</div>
<div>
{% for obj in seminar.seminarparticipant_set.all %}
<p>{{obj}}</p>
{% endfor %}
</div>
我也想在 html 页面上显示评估。但只获取研讨会相关数据。在 obj.seminar.seminarparticipant_set.all 中。我越来越空白。
请帮忙!!
解决方案
推荐阅读
- java - Android Json 数组数据错误,无法从 json 数组索引中找到或获取数据
- magento-2.3 - magento 2结帐页面条款和条件不起作用
- android - 如何防止CameraX在转动时转动
- sql-server - 带有 JOIN 和 MAX(date) 的 T-SQL 多个子查询
- python - 如何在 tkinter 计算器 GUI 中添加“等于”符号?
- javascript - 将正则表达式保存到 Redux 商店?
- python - 在一组无向图中查找最大节点数
- oauth-2.0 - 通过 OAuth 2.0 Azure AD 访问 Azure DevOps API
- javascript - 如何跨应用更新保存用户数据?
- shell - 控制du ordering