为 ManyToMany 字段赋值

问题描述

我正在尝试为 Order 类中的多对多字段分配一个值。

def assign_order(request,user_id):
    order_id = request.session.get('order_id')
      #picking this session from a prevIoUs fxn allowing me to call the order.id
    order = get_object_or_404(Order,id=order_id)

    employee = Employee.objects.filter(user_id=user_id)
      #Employee is a profile model Leveraging an AbstractUser

    order.deliverer.set(employee)
      #using .set() for direct assignment of user(Employee) onto ManyToMany field on "Order"
    order.status = 'deliverer_assigned'
    order.save()

此架构的问题在于 fxn 将始终覆盖我的 ManyToMany 字段,而不是在其上附加新的用户(员工配置文件)。

1.有没有更好的方法来完成我的需要?即在管理员之外更新多对多字段?

2.在这种情况下如何防止覆盖问题?

解决方法

使用

order.deliverer.add(employee)

而不是 .set 应该工作。

有关详细信息,请参阅 django docs