Как перезагрузить модель-форму Django?
В настоящее время мои модели выглядят примерно так,
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