我希望在另一个模型中创建新记录时,它会自动与另一个模型中的每个用户相关。
示例:我有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 ()
答案 0 :(得分:0)
Django为该
提供了字段ManyToManyField
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
相关联:
不要忘记查询集*
之前的位置参数* *User.objects.all()
,否则Django会引发错误
或更好:
participants = Participants.object.create(event = Events.objects.get (id = instance.id))
participants.user.add(*User.objects.all())
如果你想知道Django如何做check this out
的幕后花絮