2015-03-31 2 views
-1

Я начну извиняться за мой плохой английский, это не мой родной язык. В любом случае ... Я новичок в Python/Django, и я пытаюсь сделать одно приложение формы, и я не могу нормально работать с ForeignKeys. Например: у меня есть одна таблица с именем Station и другая с именем Person. В таблице Person я получил поле Station, которое ссылается на таблицу Station. Моя форма отлично работает, но отображение информации не происходит. Когда я открываю ModelChoiceField, вместо того, чтобы показывать имена или идентификатор станции, он показывает мне в каждом объекте:. Есть ли способ (возможно) определить, какое поле будет отображаться в моей форме? Это мои файлы:Использование Django ModelForm с FK

MODELS.PY:

class Person(models.Model): 
    first_name = models.CharField(max_length=50) 
    last_name = models.CharField(max_length=50) 
    station = models.ForeignKey("Station") 
    def __unicode__(self): 
    return "{0} {1}".format(self.first_name, self.last_name) 

class Station(models.Model): 
    station_name = models.CharField(max_length=50) 
    def __unicode(self): 
    return str(self.station_name) 

    FORMS.PY: 
    class FormPerson(forms.ModelForm): 
    class Meta: 
    model = Person 

VIEWS.PY:

def addperson(request): 
    if request.method == "POST": 
    form = FormPerson(request.POST, request.FILES) 
    if form.is_valid(): 
    form.save() 
    return render_to_response("salvo.html",{}) 
    else: 
    form = FormPerson() 
    return render_to_response("adiciona.html", {'form': form}, 
    context_instance=RequestContext(request)) 

ADICIONA.HTML:

<form action="" method="post"> 
{% csrf_token %} 
{{ form.as_p }} 
<button type="submit">Adicionar</button> 
</form> 
+0

'__unicode' в станции должен быть' __unicode__', если я правильно понял Ваш вопрос. – petkostas

+0

Holy sh *, просто так. Это сработало, спасибо! –

ответ

1

У вас есть опечатка на __unicode__ метода Станции (это всего лишь полумагия;).

Это должно быть примерно так:

class Station(models.Model): 
    station_name = models.CharField(max_length=50) 
    def __unicode__(self): 
     return self.station_name 
+0

Holy sh *, просто так. Это сработало, спасибо! –