django - 有什么方法可以通过查询集更新 ManyToMany 字段?
问题描述
假设我有一个对象:
survey = Survey.objects.all().first()
我想在它和一组对象之间建立关系:
respondents = Respondent.objects.all()
for r in respondents:
r.eligible_for.add(survey)
其中eligible_for
是Respondent
模型中的 M2M 字段。
有什么方法可以一次性完成,还是我需要遍历查询集?
模型.py
class Questionnaire(models.Model):
label = models.CharField(max_length=48)
organization = models.ForeignKey('Home.Organization', on_delete=models.PROTECT, null=True)
class Respondent(models.Model):
user = models.OneToOneField('Home.ListenUser', on_delete=models.CASCADE)
organization = models.ForeignKey('Home.Organization', on_delete=models.PROTECT)
eligible_for = models.ManyToManyField('Questionnaire', related_name='eligible_users', blank=True)
解决方案
.add(..)
可以携带不定数量的物品,通常会批量添加。
因此,您可以将所有r
s 添加到:
survey.eligible_users.add(*respondents)
因此,我们在这里将respondents
反向添加到关系中。注意*
前面的星号 ()respondents
将因此执行可迭代解包。
推荐阅读
- spark-streaming - Databricks Delta 表更改十进制(10,0)到十进制(38,18)转换的列不起作用
- performance - 确定 95% 的请求所用时间不超过 1 秒,如果超过则自动停止测试
- python - 根据列表展开DataFrame并添加索引
- pocketsphinx - 如何从 Pocketsphinx 获得不错的结果?
- javascript - 如何设置程序执行的时间限制?
- ios - 在 Swift 5 中,collectionView 页脚内的按钮无法完全点击
- python - 在 django 中为 api 视图创建自定义权限
- python - 如何对熊猫数据框进行分组并对另一列中的值求和
- java - 浏览器中的“->”和IDE中的“->”有什么区别?
- javascript - 应该添加列表的按钮 css 不起作用