.. _fields: Fields ====== Supported form fields --------------------- The following form fields were tested: * ``BooleanField`` * ``CharField`` * ``EmailField`` * ``FloatField`` * ``IntegerField`` * ``URLField`` * ``ChoiceField`` * ``ModelChoiceField`` * ``ModelMultipleChoiceField`` * ``FileField`` * ``ImageField`` DateField is not supported at this time (sorry). Limitations ----------- ChoiceField *********** The config will always return a *string* representation of the saved value. It's up to you to coerce it to the right type (int, float or boolean), which can be done within the ``clean_my_field`` method. Example:: # forms.py from djconfig.forms import ConfigForm class AppConfigForm(ConfigForm): myapp_choice = forms.ChoiceField(initial=None, choices=[(1, 'label_a'), (2, 'label_b')]) def clean_myapp_choice(self): # By doing this, config.myapp_choice # will return a int instead of a string return int(self.cleaned_data['myapp_choice']) ModelChoiceField **************** The config will always return the model instance which is frozen in time to when the config was loaded. If you just need the *pk*, consider returning it within the ``clean_my_field`` method. The config will return the initial value (usually ``None``), if the previously saved choice is ever deleted from the data base. ``to_field_name`` parameter is *not* currently supported. Example:: # forms.py from djconfig.forms import ConfigForm class AppConfigForm(ConfigForm): myapp_model_choice = forms.ModelChoiceField(initial=None, queryset=MyModel.objects.all()) def clean_myapp_model_choice(self): # By doing this, config.myapp_model_choice # will return the model instance pk # instead of the model instance object return self.cleaned_data['myapp_model_choice'].pk