首页 > 解决方案 > 将选定的用户分配给对象 Django

问题描述

以下代码将登录用户分配给对象,如何更改它以将下拉菜单中的选定用户分配给对象?

<form method='POST' action="{% url 'post:car' post.id %}">
    {% csrf_token %}
    <label for="select1"></label>
    <select class="mdb-select md-form" id="select1" onChange="form.submit();">
        <option value="" disabled selected>Assign</option>
        {% for user in current_users %}
            <option value="{{ user.id }}"> {{ user }} </option>
        {% endfor %}
    </select>

</form>

上述目标是将所选对象分配{{user.id}}{{post.id}}

urls.py是_

path('post/<int:tag>', views.assigned_post, name='car'),

current_users通过从views.py使用 注入来实现context['current_users'] = ProjectUser.objects.all()

views.py是_

def assigned_post(request, tag):
    as_curr = get_object_or_404(Post, id=tag)

    if request.method == 'POST':
        if as_curr.assigned_to:
            as_curr.assigned_to = None
            as_curr.save()

        else:
            as_curr.assigned_to = request.user # < -- Assign to drop down user instead of current user
            as_curr.save()

    return HttpResponseRedirect(reverse('post:tasks'))

models.py是_

class Post(models.Model):
      assigned_to = models.ForeignKey(ProjectUser, related_name="assigned_user", blank=True, null=True,
                                    on_delete=models.CASCADE)

我尝试了什么:

as_curr.assigned_to = request.POST.get('user_id')

但意见正在None回归request.POST.get('user_id')

标签: pythondjango

解决方案


因为您的模型将assigned_to 指定为ProjectUser 的ForeignKey,这意味着您必须使用ProjectUser 实例填充它,因此会出现错误。因此,也许在保存之前尝试获取 ProjectUser:

# views.py 

user = ProjectUser.objects.get(id=request.POST.get('user_id'))
as_curr.assigned_to = user
as_curr.save()

推荐阅读