gpt4 book ai didi

python - Django:删除对象中的 m2m 关系

转载 作者:行者123 更新时间:2023-11-30 23:13:41 25 4
gpt4 key购买 nike

我刚刚开始玩 Django,我喜欢它!不过,我仍在使用 Django ORM 进行工作...

目前我有一个与用户建立 m2m 关系的模型 Shift:

class Shift(models.Model):
users = models.ManyToManyField(User)

我想定义一个 View 来检查 M2M 关系是否存在,如果存在,则删除该关系。这就是我陷入困境的地方:我能够查找关系是否存在,但无法删除它。我的代码有什么问题吗?

def remove_if_exists(request, shift_id, username):
shift = get_object_or_404(Shift, pk=shift_id)
if shift.users.filter(username=username).exists()
shift.users.remove(username)

最佳答案

您的代码的问题在于,关系不是与用户名相关,而是与 User 对象相关。因此,您对 remove 的调用应该有一个 User 对象作为其参数。您需要首先从数据库中实际获取相关用户,然后使用该对象调用删除。

但是,有一个快捷方式:如果对象不在相关集中,则删除不会引发错误,因此您可以跳过存在调用。这给出了:

user = User.objects.get(username=username)
shift = get_object_or_404(Shift, pk=shift_id)
shift.users.remove(user)

关于python - Django:删除对象中的 m2m 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29188424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com