将M2M关系插入表中

时间:2014-08-28 17:46:45

标签: django orm

我正在尝试将关系插入到Task模型中定义的多对多表中。当我尝试add()关系时,我收到Queryset has no attribute user_task的错误。插入这种关系需要做什么?

models.py

class Task(models.Model):
    user_task = models.ManyToManyField(AUTH_USER_MODEL)

views.py

def create_usertask(request):
    if request.method == 'POST':
        task = Task.objects.filter(id=request.POST['id'])
        task.user_task.add(request.user.id)
        return HttpResponseRedirect('/tasks/%s' % request.POST['id'])

1 个答案:

答案 0 :(得分:0)

下面:

task = Task.objects.filter(id=request.POST['id'])

这是一个查询集。然而,您只能在对象(而不是查询集)上引用foreignkey / m2m字段

您可以这样做:

for t in task:
    t.user_task.add(request.user)

另外,我会检查request.user.is_authenticated()或添加装饰器@login_required以确保它按预期工作。