переопределение отображения формы django по умолчанию в шаблонах - PullRequest
0 голосов
/ 18 июля 2011

Модель:

class Subject(models.Model):
  name = models.CharField(max_length=100)
  slug = models.SlugField(unique=True)
  description = models.TextField(blank=True,null=True)

Формы:

class SearchTypeForm(forms.Form):
  subject = forms.ModelChoiceField(queryset = Subject.objects.all())

Просмотры:

...
context['search_type_form'] = SearchTypeForm()
...

Шаблон:

{{search_type_form.subject}}

В реальных шаблонахформа типа поиска отображается следующим образом:

<select id="id_subject" name="subject">
<option selected="selected" value="">---------</option>
<option value="1">subject 1</option>
<option value="2">subject 2</option>
...
</select>

В поле значения (в раскрывающемся списке выше) указан идентификатор соответствующей темы. Как его можно изменить на какое-то другое поле, как мы хотим сделатьэто поле слагов модели субъекта .

Ответы [ 2 ]

1 голос
/ 30 января 2012

Вы можете переопределить его, указав аргумент ключевого слова to_field_name следующим образом:

from django import forms

from some.models import Something

class SomeForm(forms.Form):
something = forms.ModelChoiceField(queryset=Something.objects.all(), 
                                   to_field_name="slug")
1 голос
/ 18 июля 2011

Зависит от __unicode__ метода модели.Возврат slug:

class Subject(models.Model):
  name = models.CharField(max_length=100)
  slug = models.SlugField(unique=True)
  description = models.TextField(blank=True,null=True)

  def __unicode__(self):
      return self.slug
...