如何将初始参数传递给 django 的 ModelForm 实例?

2023-12-30

我遇到的具体情况是这样的:

我有一个交易模型,其中包含以下字段:from, to(两者都是ForeignKeys to auth.User型号)和amount。在我的表单中,我想向用户展示 2 个要填写的字段:amount and from (to将在视图功能中自动设置为当前用户)。

默认小部件呈现ForeignKey是一个选择框。但我想要达到的目标是将选择限制在user.peers仅查询集成员(因此人们只能向其同行注册交易,而不会被所有系统用户淹没)。

我尝试将 ModelForm 更改为如下所示:

class AddTransaction(forms.ModelForm):
  from = ModelChoiceField(user.peers)
  amount = forms.CharField(label = 'How much?')

  class Meta:
    model = models.Transaction

但看来我必须传递选择的查询集ModelChoiceField就在这里 - 我无法访问网络request.user object.

如何将表单中的选择限制为依赖于用户的选项?


使用以下方法(希望它足够清楚):

class BackupForm(ModelForm):
    """Form for adding and editing backups."""

    def __init__(self, *args, **kwargs):
        systemid = kwargs.pop('systemid')
        super(BackupForm, self).__init__(*args, **kwargs)
        self.fields['units'] = forms.ModelMultipleChoiceField(
                required=False,
                queryset=Unit.objects.filter(system__id=systemid),
                widget=forms.SelectMultiple(attrs={'title': _("Add unit")}))

    class Meta:
        model = Backup
        exclude = ('system',)

创建这样的表格:

form_backup = BackupForm(request.POST,
                         instance=Backup,
                         systemid=system.id)
form_backup = BackupForm(initial=form_backup_defaults,
                         systemid=system.id)

希望有帮助!如果您需要我更深入地解释,请告诉我。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将初始参数传递给 django 的 ModelForm 实例? 的相关文章

随机推荐