/ / Django Form Fields: Представете стойностите на полето като поле на модела освен PK? - джанго, джанго-форми

Django Form Fields: Представете стойностите на полето като поле на модела освен PK? - джанго, джанго-форми

Възможно ли е да има поле на форма на 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)