from django import newforms as forms
from models import Language
# I put this on all required fields, because it's easier to pick up
# on them with CSS or JavaScript if they have a class of "required"
# in the HTML. Your mileage may vary.
attrs_dict = { 'class': 'required' }
class AddSnippetForm(forms.Form):
"""
Form used for adding Snippets.
"""
def __init__(self, *args, **kwargs):
super(AddSnippetForm, self).__init__(*args, **kwargs)
self.fields['language'].choices = [('', '----------')] + [(lang.id, lang.name) for lang in Language.objects.all()]
title = forms.CharField(max_length=250, widget=forms.TextInput(attrs=attrs_dict))
description = forms.CharField(widget=forms.Textarea(attrs=attrs_dict))
code = forms.CharField(widget=forms.Textarea(attrs=attrs_dict))
tag_list = forms.CharField(max_length=250, widget=forms.TextInput(attrs=attrs_dict))
language = forms.ChoiceField(choices=(), widget=forms.Select(attrs=attrs_dict))
Comments
It is also easy to create a builder function. You can use the same caching mechanism you do with other functions and even return different forms depending on the arguments.
#
Thank you!!!
I have spent several days trying to figure out how to filter a lookup table based on a value passed at run time. I was on the verge of deciding it could not be done, when I discovered this Snippet.
My only wish now is that I could understand >why< this works, when nothing else I tried did, but fortunately many things that I do not understand work anyway.
#
Thank you for this snippet, one more question:
#
Thank you for this helpful snippet ubernostrum.
If the form is bound and you want to filter the database query based on a value therein you can access it by: self.data.get('fieldname')
#
You can also use the 'queryset' field of ModelChoiceField:
#