/ / django tvoria odlišné hodnoty od - django, djangoform

django tvoria rôzne hodnoty - django, django-formy

Snažím sa vygenerovať formulár pomocou existujúceho modelu. Väčšinou to však funguje, ale hodnoty, ktoré dostávam cez svoju adresu URL, zobrazujú mojich poskytovateľov. id a formulár zobrazí Poskytovateľa názov, Ako môžem naďalej zobrazovať názov vo forme, ale získanie poskytovateľa slimák namiesto id ako hodnota z tohto formulára?

Model

class Provider(models.Model):
name = models.CharField(unique=True, max_length=256)
slug = AutoSlugField(populate_from="name", always_update="True")
...

formulár

class FiltersAndSortingForm(forms.Form):
provider = forms.ModelMultipleChoiceField(queryset=Provider.objects.all().order_by("name"), label="Provider", required=False,)

vyhliadka

def resources(request):
if request.GET:
provider = request.GET.getlist("provider", "")

qset_provider = Q()
for x in provider:
qset_provider |= Q(provider=x)

resources = Resource.objects.filter(inactive=0).filter(qset_provider)
form = FiltersAndSortingForm()
else:
form = FiltersAndSortingForm()
resources = Resource.objects.filter(inactive=0)

context = {
"resources": resources,
"form": form,

}
return render(request, "mainapp/resources.html", context)

resources.html

         {% for field in form %}
{{ field.label }}
{{ field }}
{% endfor %}

odpovede:

0 pre odpoveď č. 1

Predpokladám, že používate Django 1.6. Ak áno, môžete urobiť nasledujúce kroky podľa docs.

from django.forms import ModelChoiceField

class ProviderModelChoiceField(ModelChoiceField):
def label_from_instance(self, obj):
return obj.slug

Potom musíte použiť ProviderModelChoiceField vo vašej podobe.

V opačnom prípade, ak používate 1.7, môžete použiť argument to_field_name, Tu sú docs.