如何重新加载 Django 模型表单?
How do I reload Django model-forms?
目前我的模型看起来与此类似,
def feature_tuples():
features = (('a', 'a'), ('b', 'b'))
return features
class Sample(models.Model):
choices_tuple = models.CharField(max_length=20, blank=True, null=True, choices=feature_tuples())
我创建了这个模型的模型。但是,在某些时候,用户可以将选项从 (a, b) 更改为 (c, d) 或任何其他字符。
choices_tuple
的选项也由a,b改为c,d。我找不到在表单中重新加载它们的方法。帮忙?
如果您想为模型字段动态设置选项,那么您可以为该模型创建模型表单并在 init 中设置动态选项模型形式的方法。
注意:不要在模型中设置 choices 属性。如果您在模型字段中设置 choices 那么它只接受那些 choice_value.
from django import forms
class YourModelForm(forms.ModelForm):
default_choices = [('a', 'a'), ('b', 'b')]
choices_tuple = forms.ChoiceField(choices=default_choices, required=False)
def __init__(self, *args, **kwargs):
super(YourModelForm, self).__init__(*args, **kwargs)
self.fields['choices_tuple'].choices = self.get_dynamic_choice()
class Meta:
model = YourModel
fields = ['choices_tuple']
def get_dynamic_choice(self):
''' you can set choices'''
choices = [('c', 'c'), ('d', 'd')]
return choices
目前我的模型看起来与此类似,
def feature_tuples():
features = (('a', 'a'), ('b', 'b'))
return features
class Sample(models.Model):
choices_tuple = models.CharField(max_length=20, blank=True, null=True, choices=feature_tuples())
我创建了这个模型的模型。但是,在某些时候,用户可以将选项从 (a, b) 更改为 (c, d) 或任何其他字符。
choices_tuple
的选项也由a,b改为c,d。我找不到在表单中重新加载它们的方法。帮忙?
如果您想为模型字段动态设置选项,那么您可以为该模型创建模型表单并在 init 中设置动态选项模型形式的方法。
注意:不要在模型中设置 choices 属性。如果您在模型字段中设置 choices 那么它只接受那些 choice_value.
from django import forms
class YourModelForm(forms.ModelForm):
default_choices = [('a', 'a'), ('b', 'b')]
choices_tuple = forms.ChoiceField(choices=default_choices, required=False)
def __init__(self, *args, **kwargs):
super(YourModelForm, self).__init__(*args, **kwargs)
self.fields['choices_tuple'].choices = self.get_dynamic_choice()
class Meta:
model = YourModel
fields = ['choices_tuple']
def get_dynamic_choice(self):
''' you can set choices'''
choices = [('c', 'c'), ('d', 'd')]
return choices