Възможно ли е да има поле на форма на Django, което да представлява стойности на формуляра като охлюви (напр. <input value="groceries">
) вместо идентификационни номера (<input value="1">
) без съществено пренаписване на формулярните методи? Служенето е достъпно за модела (например Category.slug).
Forms.py:
from django import forms
from django.forms import ModelMultipleChoiceField, CheckboxSelectMultiple
from myproject.common.models import Category
class MyForm(forms.Form):
cats = ModelMultipleChoiceField(required=False, queryset=Category.objects.all(), widget=CheckboxSelectMultiple)
Текущ HTML код за всеки избор:
<label for="id_cats_0"><input type="checkbox" name="cats" value="1" id="id_cats_0" /> Groceries</label>
Вместо това бих искал да видя HTML предоставен като ...
<label for="id_cats_0"><input type="checkbox" name="cats" value="groceries" id="id_cats_0" /> Groceries</label>
... и бих искал останалата част от формата на Джанго да работи нормално.
Може би мечтая, но има ли изборби ми позволила да посоча поле, освен PK, с което да идентифицирам избора на полето? Трябва да използвам полето за складиране вместо идентификационния номер, за да поддържам наследствена система за търсене. Благодаря предварително.
Отговори:
1 за отговор № 1Опитайте тази:
cats = ModelMultipleChoiceField(required=False, to_field_name="slug", queryset=Category.objects.all(), widget=CheckboxSelectMultiple)