2014-05-16 2 views
1

, пожалуйста, помогите решить проблему.Как отобразить связанное поле формы?

Существует таблица с данными о пользователе. таблица имеет родственный раздел «пол». вы хотите отобразить форму с раскрывающимся списком, чтобы выбрать пол.

models.py:

class Gender(models.Model):  
    gender = models.CharField(
     max_length=10, 
     blank=False, 
    ) 
class UserProfile(User): 
    nickname = models.CharField(
     'Отображаемое имя', 
     max_length=30, 
     blank=False, 
    ) 
    gender = models.ForeignKey(
     Gender, 
     #default=1, 
     null=True, 
    ) 

views.py:

def personal_data_page(request): 
    entry_user_profile = UserProfile.objects.get(user_ptr_id__exact=request.user.id)  
    form = PersonalDataForm(instance=entry_user_profile)  

    t = loader.get_template('personal_data_page.html') 
    c = RequestContext(request, { 
     'form': form, 
    }) 
    return HttpResponse(t.render(c)) 

forms.py:

class PersonalDataForm(forms.ModelForm):  
    class Meta: 
     model = UserProfile 
     fields = (
      'nickname', 
      'gender', 
     ) 

personal_data_page.html:

<div class="cell"> 
    <label class="label">{{ form.gender.label }}</label> 

    {{ form.gender }} 

    {{ form.gender.errors }} 
</div> 

проблема заключается в том, что линия выводит

. и мне нужно вывести что-то вроде:

<select> 
    <option value="1">Male</option> 
    <option value="2">Female</option> 
</select> 

ответ

1

Почему бы вам сделать UserProfile модель с ForeignKey к столу Пол? Просто укажите пол в UserProfile.

И что вы ищете, называется choice_field.

Вот пример: ChoiceField in Django model

А вот документация: https://docs.djangoproject.com/en/dev/ref/models/fields/#field-choices.

Кроме того, здесь есть некоторые документы об использовании виджета с выбором: https://docs.djangoproject.com/en/dev/topics/forms/modelforms/

EDIT

Если вы действительно хотите сохранить Пол таблицу:

class PersonalDataForm(forms.ModelForm):  
    class Meta: 
     model = UserProfile 
     fields = (
      'nickname', 
      'gender', 
     ) 
     widgets = {'gender': forms.ModelChoiceField(queryset = 
                Gender.objects.all())} 

, предполагая, что вы определены __unicode__ за Gender

Подробнее здесь:

  1. Specifying widget for model form extra field (Django)
  2. Django, ModelChoiceField() and initial value
+0

мне нужно делать через ForeignKey, но не через выборы – user3607370

+1

сделал правку для вас. PS: Пожалуйста, изучите английский язык на базовом уровне, если вы хотите быть частью международного сообщества и рассчитывать на получение ответов на английском языке. Нам нужно понять ваш вопрос в первую очередь –

+0

извините. и спасибо – user3607370

Смежные вопросы