所以基本上这就是我要做的事情:
我希望有一种方法可以根据用户只读取一些字段。
到目前为止它很容易,但是问题就出现了,我需要将一些选择输入设为只读,而且......只读它们不能很好地工作。问题是,即使未提交新值,用户仍然可以使用它。我希望禁用选择字段,但如果我这样做,则不会通过POST发送该值,并且表单有效方法存在问题。
所以在阅读之后,我明白唯一的方法是禁用除默认选择的字段以外的所有字段?
怎么可能
这是我到目前为止所做的:
def __init__(self, *args, **kwargs):
self.user = kwargs.pop('user')
super(TeamForm, self).__init__(*args, **kwargs)
instance = getattr(self, 'instance', None)
if instance and instance.pk is None:
self.fields['division'].initial = 1
user_role = self.user.memberaccount.get_role()
if user_role != 'admin':
这就是我要禁用选择的地方......
非常感谢你的帮助, ARA
答案 0 :(得分:0)
我在这里看到两种可能的选择:
创建一个自定义窗口小部件,该窗口小部件将显示已禁用的选项以及包含要提交的值的隐藏输入https://docs.djangoproject.com/en/dev/ref/forms/widgets/#customizing-widget-instances
根据需要设置字段= False并在表单中创建一个clean_division()方法,以填充该字段(如果尚未提交):https://docs.djangoproject.com/en/dev/ref/forms/validation/#cleaning-a-specific-field-attribute