se si dispone di Form.ModelForm con un campo di scelta, è possibile inserirlo nel modello mediante un semplice filtro modello.
forms.py
STATE_CHOICES = (
(10, 'NO'),
(4, 'YES'),
(18, 'Send to another Chemist for Review'),
(34, 'Send to another Market Expert for Review'),
(20, 'HOLD'),
)
new_state = forms.ChoiceField(
choices=STATE_CHOICES,
required=True,
)
Template:
{{ business_manager_form.new_state|filter_project_states:project }}
e qui è il filtro è di per sé.
@register.filter()
def filter_project_states(argv, project):
if project.department.id != 4:
argv.field.choices = [choice for choice in argv.field.choices if choice[0] != 34]
return argv
Spero che questo aiuti.
So che questo è vecchio, ma c'è un modo per determinare se il campo è selezionato? –
Prima di tutto, fai attenzione quando usi un widget personalizzato, le opzioni di campo e le opzioni del widget potrebbero non essere le stesse. Quindi dovrai usare "form.travels.field.widget.choices". –
In secondo luogo, per la selezione personalizzata se si utilizza un widget radio, è necessario verificare ogni valore rispetto al valore del campo e impostare l'input su controllato quando corrispondono. Ad esempio: "{% if form.travels.value = choice_id%} checked =" checked "{% endif%}". –