Django - 将另一个模型的新记录与用户组相关联

时间:2018-06-05 21:06:51

标签: 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 ()

1 个答案:

答案 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

的幕后花絮