Python 渲染时的IntegrityError和赢得';t取自动完成值

Python 渲染时的IntegrityError和赢得';t取自动完成值,python,django,autocomplete,django-views,Python,Django,Autocomplete,Django Views,说明:模板完美地呈现了自动完成。。。但一旦我测试它并单击“添加管理器”,它就会返回以下错误: Exception Type: IntegrityError Exception Value: investments_managesfund.manager_id may not be NULL 我想不出来。因为在帖子中,它会发送csrf_令牌和管理员用户名 将经理添加到基金视图。py: @login_required def add_manager_to_fund(reque

说明:模板完美地呈现了自动完成。。。但一旦我测试它并单击“添加管理器”,它就会返回以下错误:

Exception Type:     IntegrityError
Exception Value:    investments_managesfund.manager_id may not be NULL
我想不出来。因为在帖子中,它会发送csrf_令牌和管理员用户名

将经理添加到基金视图。py:

@login_required
    def add_manager_to_fund(request, fund_id):
        fund = get_object_or_404(Fund, id=fund_id)
        if request.POST['from'] == 'fund':
            if 'omnibox' in request.POST:
                manager = ManagerProfile.objects.get(user=request.user)
                if not ManagesFund.objects.filter(verified=True, fund=fund, manager=manager).exists() and not request.user.is_staff:
                    return HttpResponseRedirect('/profile/fund/' + fund_id + '/')       
                try:
                    mp = ManagerProfile.objects.get(user__username=request.POST['omnibox'])
                    fundManager = ManagesFund.objects.get(manager=mp, fund=fund, from_user=True)
                    if not fundManager.verified:
                        fundManager.verified = True
                        fundManager.save()
                except ObjectDoesNotExist:
                    fundManager, created = ManagesFund.objects.get_or_create(manager__user__username=request.POST['omnibox'], fund=fund, from_user=False)
                    if created:
                        fundManager.save()
        return HttpResponseRedirect('/profile/edit/fund/' + fund_id + '/')
自动完成视图。py:

@login_required
def managers(request):
    managers = ManagerProfile.objects.exclude(user=None)
    result = {}
    for manager in managers:
        result[manager.user.get_full_name()] = manager.user.username
    return HttpResponse(json.dumps(result))

“自动完成”视图传递用户名,并将\u manager\u添加到\u fund()获取用户名。如何修复此问题?

您真的应该重新构造代码。您在try中有两个调用可能会引发ObjectDoesNotExist。我猜其中一定有一个,但我们不知道是哪一个。除此之外,您似乎正在创建ManagesFund,而没有指定管理器。这就是造成你的完整性错误的原因

如果您需要从用户名中查找管理器(看起来您正在尝试这样做)。为get_或create提前完成