2014-05-16 6 views
1

s'il vous plaît aider à résoudre le problème.comment afficher le champ de formulaire associé?

Il y a un tableau avec les données sur l'utilisateur. la table a un champ apparenté "genre". vous voulez afficher un formulaire avec une liste déroulante pour sélectionner le genre.

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> 

le problème est que les sorties ligne

. et je dois la sortie est quelque chose comme:

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

Répondre

1

Pourquoi voudriez-vous faire un modèle UserProfile avec un ForeignKey à une table de genre? Il suffit d'inclure simplement le genre dans le UserProfile.

Et ce que vous cherchez est appelé choice_field.

est un exemple: ChoiceField in Django model

Et voici la documentation: https://docs.djangoproject.com/en/dev/ref/models/fields/#field-choices.

En outre, voici quelques documents sur l'utilisation d'un widget avec des choix: https://docs.djangoproject.com/en/dev/topics/forms/modelforms/

EDIT

Si vous voulez vraiment garder la table de genre:

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

, en supposant que vous ont défini __unicode__ pour Gender

Voir plus ici:

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

que je dois faire à travers foreignKey, mais pas par les choix – user3607370

+1

a modifié cette page pour vous. PS: S'il vous plaît, apprenez l'anglais à un niveau de base si vous voulez faire partie de la communauté internationale et vous attendre à recevoir des réponses en anglais. Nous devons d'abord comprendre votre question –

+0

désolé. et merci – user3607370

Questions connexes