我有一个modelform和im为其表单创建附加字段(模型中不存在)。django模型及其附加字段及其顺序
我知道你可以对模型中的字段进行重新排序,就像它在the docs中说的那样。
但问题是 - 我想额外的领域被呈现在其他领域之前。
是否有可能在呈现之前以某种方式重新排列表单的字段?表单对象如何跟踪其字段顺序?
Alan
我有一个modelform和im为其表单创建附加字段(模型中不存在)。django模型及其附加字段及其顺序
我知道你可以对模型中的字段进行重新排序,就像它在the docs中说的那样。
但问题是 - 我想额外的领域被呈现在其他领域之前。
是否有可能在呈现之前以某种方式重新排列表单的字段?表单对象如何跟踪其字段顺序?
Alan
无论如何。看来我已经找到了答案,这似乎是诀窍,因为我已经添加了2个附加字段:
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
self.build_fields()
l = len(self.fields.keyOrder)
for i in range(0,2):
f = self.fields.keyOrder[l-1]
self.fields.keyOrder.pop(l-1)
self.fields.keyOrder.insert(0, f)
以上是我的初始修复程序。后来我发现它并没有再减少。然后,我这样做:
class AlertForm(forms.ModelForm):
class Meta:
model = Message
fields = model_fields
def __init__(self, *args, **kwargs):
super(AlertForm, self).__init__(*args, **kwargs)
self.build_fields()
newKeyOrder = []
newKeyOrder.append('field_that_had_to_be_first')
if typechange:
newKeyOrder.append('field_thats_sometimes_necessary')
newKeyOrder += model_fields
self.fields.keyOrder = newKeyOrder
的字段属性的你ModelForm`s Meta class定义的字段显示以及以何种顺序。
使用ModelForm的内部Meta类的fields属性。该属性(如果给出)应该是要包含在表单中的字段名称列表。在表单呈现时,尊重该列表中指定字段名称的顺序。
没有。在我问这个问题之前试过了。如果您在字段名称中包含模型本身不包含的字段名称,则会引发错误。 –
您可以请发布定义您的表单的代码吗? –
我投下了这个,因为你的回答没有解决他的问题,这是显示未在模型中定义的其他字段。 –