我们从Python开源项目中,提取了以下17个代码示例,用于说明如何使用django.forms.TypedChoiceField()。
def set_fields(cls, category, products): choices = [] for product in products: choice_text = "%s -- $%d" % (product.name, product.price) choices.append((product.id, choice_text)) if not category.required: choices.append((0, "No selection")) cls.base_fields[cls.FIELD] = forms.TypedChoiceField( label=category.name, widget=forms.RadioSelect, choices=choices, empty_value=0, coerce=int, )
def set_fields(cls, category, products): choices = [] if not category.required: choices.append((0, "---")) for product in products: choice_text = "%s -- $%d each" % (product.name, product.price) choices.append((product.id, choice_text)) cls.base_fields[cls.CHOICE_FIELD] = forms.TypedChoiceField( label=category.name, widget=forms.Select, choices=choices, initial=0, empty_value=0, coerce=int, ) cls.base_fields[cls.QUANTITY_FIELD] = forms.IntegerField( label="Quantity", # TODO: internationalise min_value=0, max_value=500, # Issue #19. We should figure out real limit. )
def formfield(self, form_class=None, choices_form_class=None, **kwargs): """ Returns a django.forms.Field instance for this database Field. """ defaults = {'required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text} if self.has_default(): if callable(self.default): defaults['initial'] = self.default defaults['show_hidden_initial'] = True else: defaults['initial'] = self.get_default() if self.choices: # Fields with choices get special treatment. include_blank = (self.blank or not (self.has_default() or 'initial' in kwargs)) defaults['choices'] = self.get_choices(include_blank=include_blank) defaults['coerce'] = self.to_python if self.null: defaults['empty_value'] = None if choices_form_class is not None: form_class = choices_form_class else: form_class = forms.TypedChoiceField # Many of the subclass-specific formfield arguments (min_value, # max_value) don't apply for choice fields, so be sure to only pass # the values that TypedChoiceField will understand. for k in list(kwargs): if k not in ('coerce', 'empty_value', 'choices', 'required', 'widget', 'label', 'initial', 'help_text', 'error_messages', 'show_hidden_initial'): del kwargs[k] defaults.update(kwargs) if form_class is None: form_class = forms.CharField return form_class(**defaults)
def __init__(self, league, player, *args, **kwargs): super(NotificationsForm, self).__init__(*args, **kwargs) for type_, _ in PLAYER_NOTIFICATION_TYPES: setting = PlayerNotificationSetting.get_or_default(player=player, league=league, type=type_) self.fields[type_ + "_lichess"] = forms.BooleanField(required=False, label="Lichess", initial=setting.enable_lichess_mail) self.fields[type_ + "_slack"] = forms.BooleanField(required=False, label="Slack", initial=setting.enable_slack_im) self.fields[type_ + "_slack_wo"] = forms.BooleanField(required=False, label="Slack (with opponent)", initial=setting.enable_slack_mpim) if type_ == 'before_game_time': offset_options = [(5, '5 minutes'), (10, '10 minutes'), (20, '20 minutes'), (30, '30 minutes'), (60, '1 hour'), (120, '2 hours')] self.fields[type_ + '_offset'] = forms.TypedChoiceField(choices=offset_options, initial=int(setting.offset.total_seconds()) / 60, coerce=int)
def formfield(self, form_class=None, choices_form_class=None, **kwargs): """ Returns a django.forms.Field instance for this database Field. """ defaults = {'required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text} if self.has_default(): if callable(self.default): defaults['initial'] = self.default defaults['show_hidden_initial'] = True else: defaults['initial'] = self.get_default() if self.choices: # Fields with choices get special treatment. include_blank = (self.blank or not (self.has_default() or 'initial' in kwargs)) defaults['choices'] = self.get_choices(include_blank=include_blank) defaults['coerce'] = self.to_python if self.null: defaults['empty_value'] = None if choices_form_class is not None: form_class = choices_form_class else: form_class = forms.TypedChoiceField # Many of the subclass-specific formfield arguments (min_value, # max_value) don't apply for choice fields, so be sure to only pass # the values that TypedChoiceField will understand. for k in list(kwargs): if k not in ('coerce', 'empty_value', 'choices', 'required', 'widget', 'label', 'initial', 'help_text', 'error_messages', 'show_hidden_initial', 'disabled'): del kwargs[k] defaults.update(kwargs) if form_class is None: form_class = forms.CharField return form_class(**defaults)
def __init__(self, *args, **kwargs): super(SettingsModelForm, self).__init__(*args, **kwargs) instance = kwargs.get('instance', None) self.__editing_instance = False if instance: self.__editing_instance = True self.fields['delete_subscriptions'] = ArticleSubscriptionModelMultipleChoiceField( models.ArticleSubscription.objects.filter( subscription__settings=instance), label=ugettext("Remove subscriptions"), required=False, help_text=ugettext("Select article subscriptions to remove from notifications"), initial=models.ArticleSubscription.objects.none(), ) self.fields['email'] = forms.TypedChoiceField( label=_("Email digests"), choices=( (0, ugettext('Unchanged (selected on each article)')), (1, ugettext('No emails')), (2, ugettext('Email on any change')), ), coerce=lambda x: int(x) if x is not None else None, widget=forms.RadioSelect(), required=False, initial=0, )
def __init__(self, *args, **kwargs): """ Initialize the form. Substitutes CharField with TypedChoiceField for the provider_id field. """ super(EnterpriseCustomerIdentityProviderAdminForm, self).__init__(*args, **kwargs) idp_choices = utils.get_idp_choices() if idp_choices is not None: self.fields['provider_id'] = forms.TypedChoiceField(choices=idp_choices)
def __init__(self, *args, **kwargs): """Initialize the form.""" super(AddPostForm, self).__init__(*args, **kwargs) self.fields['category'].empty_label = None self.fields['category'].initial = 'Note' for field_name in self.fields: field = self.fields.get(field_name) if field and isinstance(field, forms.TypedChoiceField): field.choices = field.choices[1:]
def form_factory(method=None, data=None, prefix=None): """Dynamically generate a form for the given LG method.""" exceptions.check_type(instance=method, classinfo=BaseMethod) class FormClass(LookingGlassBaseForm): method_name = forms.CharField( required=True, widget=forms.HiddenInput, initial=method.name ) auth_key = forms.CharField( required=True, widget=forms.HiddenInput, ) target = method.target_field if method.options: options = forms.TypedChoiceField( required=True, choices=method.option_choices, widget=forms.RadioSelect(), initial=0, coerce=int, empty_value=None ) form = FormClass(data, prefix=prefix) return form
def __init__(self, t_range, points=None, line=None, *args, **kwargs): super(SbmlExportSelectionForm, self).__init__(*args, **kwargs) time_field = self.fields['time_select'] if points is not None: initial = points[0] if points else None self.fields['time_select'] = forms.TypedChoiceField( choices=[('%s' % t, '%s hr' % t) for t in points], coerce=Decimal, empty_value=None, help_text=time_field.help_text, initial=initial, label=time_field.label, ) else: time_field.max_value = t_range.max time_field.min_value = t_range.min time_field.initial = t_range.min time_field.help_text = _( 'Select the time to compute fluxes for embedding in SBML template (in the range ' '%(min)s to %(max)s)' ) % t_range._asdict() if line is not None: self.fields['filename'].initial = '%s.sbml' % line.name # update self.data with defaults for fields replace_data = QueryDict(mutable=True) for fn in ['time_select', 'filename']: fk = self.add_prefix(fn) if fk not in self.data: replace_data[fk] = self.fields[fn].initial replace_data.update(self.data) self.data = replace_data
def get_custom_fields_for_model(content_type, filterable_only=False, bulk_edit=False): """ Retrieve all CustomFields applicable to the given ContentType """ field_dict = OrderedDict() kwargs = {'obj_type': content_type} if filterable_only: kwargs['is_filterable'] = True custom_fields = CustomField.objects.filter(**kwargs) for cf in custom_fields: field_name = 'cf_{}'.format(str(cf.name)) # Integer if cf.type == CF_TYPE_INTEGER: field = forms.IntegerField(required=cf.required, initial=cf.default) # Boolean elif cf.type == CF_TYPE_BOOLEAN: choices = ( (None, '---------'), (1, 'True'), (0, 'False'), ) if cf.default.lower() in ['true', 'yes', '1']: initial = 1 elif cf.default.lower() in ['false', 'no', '0']: initial = 0 else: initial = None field = forms.NullBooleanField(required=cf.required, initial=initial, widget=forms.Select(choices=choices)) # Date elif cf.type == CF_TYPE_DATE: field = forms.DateField(required=cf.required, initial=cf.default, help_text="Date format: YYYY-MM-DD") # Select elif cf.type == CF_TYPE_SELECT: choices = [(cfc.pk, cfc) for cfc in cf.choices.all()] if not cf.required or bulk_edit or filterable_only: choices = [(None, '---------')] + choices field = forms.TypedChoiceField(choices=choices, coerce=int, required=cf.required) # URL elif cf.type == CF_TYPE_URL: field = LaxURLField(required=cf.required, initial=cf.default) # Text else: field = forms.CharField(max_length=255, required=cf.required, initial=cf.default) field.model = cf field.label = cf.label if cf.label else cf.name.replace('_', ' ').capitalize() if cf.description: field.help_text = cf.description field_dict[field_name] = field return field_dict
def update_custom_fields(self, pk_list, form, fields, nullified_fields): obj_type = ContentType.objects.get_for_model(self.cls) objs_updated = False for name in fields: field = form.fields[name].model # Setting the field to null if name in form.nullable_fields and name in nullified_fields: # Delete all CustomFieldValues for instances of this field belonging to the selected objects. CustomFieldValue.objects.filter(field=field, obj_type=obj_type, obj_id__in=pk_list).delete() objs_updated = True # Updating the value of the field elif form.cleaned_data[name] not in [None, '']: # Check for zero value (bulk editing) if isinstance(form.fields[name], TypedChoiceField) and form.cleaned_data[name] == 0: serialized_value = field.serialize_value(None) else: serialized_value = field.serialize_value(form.cleaned_data[name]) # Gather any pre-existing CustomFieldValues for the objects being edited. existing_cfvs = CustomFieldValue.objects.filter(field=field, obj_type=obj_type, obj_id__in=pk_list) # Determine which objects have an existing CFV to update and which need a new CFV created. update_list = [cfv['obj_id'] for cfv in existing_cfvs.values()] create_list = list(set(pk_list) - set(update_list)) # Creating/updating CFVs if serialized_value: existing_cfvs.update(serialized_value=serialized_value) CustomFieldValue.objects.bulk_create([ CustomFieldValue(field=field, obj_type=obj_type, obj_id=pk, serialized_value=serialized_value) for pk in create_list ]) # Deleting CFVs else: existing_cfvs.delete() objs_updated = True return len(pk_list) if objs_updated else 0