Django:如何为内联模型formset中的字段设置初始值?

Jef*_*eff 7 python django default-value django-forms

我认为应该是一个简单的问题.我有一个内联模型formset,我想让一个select字段具有当前登录用户的默认选择值.在视图中,我使用Django的身份验证中间件,因此获取用户只是一个简单的访问问题request.user.

但是,我无法弄清楚的是如何将该用户设置为包含用户列表的选择框(ModelChoiceField)中的默认选定值.谁能帮我这个?

Run*_*ard 6

这就是诀窍。它的工作原理是设置所有“额外”表单的初始值。

formset = MyFormset(instance=myinstance)
user = request.user
for form in formset.forms:
    if 'user' not in form.initial:
        form.initial['user'] = user.pk
Run Code Online (Sandbox Code Playgroud)


小智 5

我不确定如何在内联表单集中处理这个问题,但以下方法适用于普通表单和模型表单:

您不能将其设置为模型定义的一部分,但您可以在表单初始化期间设置它:

def __init__(self, logged_in_user, *args, **kwargs):
    super(self.__class__, self).__init__(*args, **kwargs)
    self.fields['my_user_field'].initial = logged_in_user

...

form = MyForm(request.user)
Run Code Online (Sandbox Code Playgroud)