gpt4 book ai didi

python - 动态包含/排除 Django ModelForm 元类中的字段

转载 作者:行者123 更新时间:2023-12-01 06:22:36 25 4
gpt4 key购买 nike

假设我有一个表单,例如:

from django import forms

class Foo(forms.ModelForm):
class Meta:
model = SomeModel
fields = ('field1', 'field2', 'field3')

如何根据某些条件包含或排除字段?

编辑:

我的错,我应该澄清条件需要根据正在渲染的每个模型的值来制定。这意味着我需要根据当前正在渲染的模型的值添加(或删除)字段。

最佳答案

您可以通过__init__修改表单字段:

from django import forms

class Foo(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

if condition:
self.fields.pop('field1')

class Meta:
model = SomeModel
fields = ('field1', 'field2', 'field3')

请注意,如果该字段为必填字段,这可能会导致表单验证失败。

更好的方法可能是隐藏该字段,而不是完全删除它:

class Foo(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

if condition:
form.fields['field1'].widget = forms.HiddenInput()

class Meta:
model = SomeModel
fields = ('field1', 'field2', 'field3')

关于python - 动态包含/排除 Django ModelForm 元类中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60290336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com