python - Django - 与用户组相关的另一个模型的新记录
问题描述
我希望在另一个模型中创建新记录时,它会自动与另一个模型中的每个用户相关联。
示例:我有 3 个模型: - 事件 - 参与者 - 用户
添加新事件时,您必须将所有用户添加到参与者列表中。
我知道我可以用一个循环来做到这一点,但我想知道在 django 中是否有另一种方式,例如
'''model Participants '''
Class participants(models.Model):
user = models.ForeignKey(User,on_delete=models.CASCADE)
event = models.ForeignKey(Event,on_delete=models.CASCADE)
''' view '''
event = Events.objects.get (id = instance.id)
participants = Participants (event = event, user = User.objects.all ())
participants.save ()
解决方案
DjangoManyToManyField
为此提供了字段
Class participants(models.Model):
user = models.ManyToManyField(User,blank=True)
# It's suggested to use plural: users = ....
event = models.ForeignKey(Event,on_delete=models.CASCADE)
在您看来,您会这样做:
event = Events.objects.get (id = instance.id)
participants = Participants (event = event)
participants.save()
participants.user.add(*User.objects.all())
您不能将它与User
直到participants
已保存:不要忘记位置参数 **
在 queryset 之前*User.objects.all()
,如果没有,Django 将引发错误
或者更好:
participants = Participants.object.create(event = Events.objects.get (id = instance.id))
participants.user.add(*User.objects.all())
如果你想知道 Django 的幕后花絮,看看这个
推荐阅读
- angular - 用于 ASP.NET Core API 应用和 Angular6 应用的 DockerCompose
- debian-based - Debian 5 是否有 augeas 版本 1.0
- apache-spark - 撤消规模数据pyspark
- angular - 我的primeng时间表出现但没有事件
- swift - Swift 选项卡式栏 2 URL
- java - 表格视图单元格内的JavaFX形状
- mongodb - 更新服务 MongoDB 失败
- sql - 带条件的 T-SQL OVER/PARTITION BY 查询
- ios - 面容 ID 评估流程无法正常工作
- angularjs - 在控制器的 ng-if 中使用服务功能