我遇到的具体情况是这样的:
我有一个交易模型,其中包含以下字段:from
, to
(两者都是ForeignKey
s 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(使用前将#替换为@)