I have a simple form in Django that looks like this:
class SettingForm(forms.Form):
theme = forms.CharField(rrequired=True,
initial='multgi'
)
defaultinputmessage = forms.CharField(required=True,
initial='Type here to begin..'
)
…and the model to store it looks like:
class Setting(models.Model):
name = models.CharField(
null=False, max_length=255
)
value= models.CharField(
null=False, max_length=255
)
When the form is submitted, how can i store the form fields as key value pairs and then when the page is rendered, how can I initialize the form with the key’s value. I’ve tried looking for an implementation of this but have been unable to find one.
Any help?
Thanks.
Here’s how I did it.
I needed to do this because I had a Model that stored information as key value pairs and I needed to build a ModelForm on that Model but the ModelForm should display the key-value pairs as fields i.e. pivot the rows to columns. By default, the
get()method of the Model always returns a Model instance of itself and I needed to use a custom Model. Here’s what my key-value pair model looked like:I built a custom manager on this to override the
get()method:This Manager would instantiate an instance of this abstract model. (Abstract models don’t have tables so Django doesn’t throw up errors)
This proxy has all the fields that I’d like display in my ModelFom and store as key-value pairs in my model. Now if I ever needed to add more fields, I could simply modify this abstract model and not have to edit the actual model itself. Now that I have a model, I can simply build a ModelForm on it like so:
I hope this helps. It required a lot of digging through the API docs to figure this out.