/ / django के अलग-अलग मूल्य हैं - django, django-forms

django से अलग मूल्य बनाते हैं - django, django-रूपों

मैं मौजूदा मॉडल का उपयोग करके फॉर्म जेनरेट करने की कोशिश कर रहा हूं। यह ज्यादातर उन मूल्यों पर काम करता है जो मैं अपने url में प्राप्त कर रहा हूं। आईडी और फॉर्म प्रदाता को प्रदर्शित करता है नाम। मैं कैसे प्रदर्शित कर सकता हूं नाम प्रदाता के रूप में काउंटर के बजाय आईडी उस रूप से एक मूल्य के रूप में?

आदर्श

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

प्रपत्र

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

राय

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 %}

उत्तर:

जवाब के लिए 0 № 1

मुझे लगता है कि आप Django 1.6 का उपयोग कर रहे हैं। यदि आप निम्न के अनुसार कर सकते हैं डॉक्स.

from django.forms import ModelChoiceField

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

फिर आपको उपयोग करने की आवश्यकता है ProviderModelChoiceField आपके रूप में

अन्यथा यदि आप 1.7 का उपयोग कर रहे हैं, तो आप तर्क का उपयोग कर सकते हैं to_field_name। यहाँ हैं डॉक्स.