在Django'中设置表单字段的初始值;s admin formfield_for_foreignkey
我的Django管理员中有以下代码:在Django'中设置表单字段的初始值;s admin formfield_for_foreignkey,django,Django,我的Django管理员中有以下代码: def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == 'affected_user': kwargs['initial'] = request.user.id return super().formfield_for_foreignkey(db_field, request, **kwargs) 模型中受
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == 'affected_user':
kwargs['initial'] = request.user.id
return super().formfield_for_foreignkey(db_field, request, **kwargs)
模型中受影响的用户字段如下所示:
affected_user = models.ForeignKey(User, on_delete=models.CASCADE)
我想从中得到的是受影响的用户
指定了特定的初始值。不幸的是,它似乎不起作用,因为我从表中获得最初的记录作为初始值,而请求的用户在中间有ID。
有人能解释一下原因吗?我可以肯定的是,is正确地输入了这个if语句。但是没有保留我的初始值。kwargs['initial']={'impacted_user':request.user.id}@AndreyMaslov不幸没有帮助。将此代码移动到
get_form(request,obj=None,**kwargs)
方法,而不是formfield_for_foreignkey
@AndreyMaslov当移动到get_form时,这是错误modelform\u factory()获取了一个意外的关键字参数“initial”
抱歉,我的错误。补充回答谢谢你的回答!但还是没用。我不知道这是为什么。我已经检查了这个方法,它应该会正确返回。我会继续挖掘。我们需要提供用户
,而不是id
,已更改的答案。我认为我面临的问题是(至少目前)由于从未调用获取更改表单\初始数据(自我,请求)
。我添加了简单打印,但它没有显示。它只为新对象调用此方法,这是我没有得到的。谢谢,这解释了很多!
def get_changeform_initial_data(self, request):
return {'affected_user': request.user}