我会为我糟糕的英语道歉,但这不是我的母语。无论如何... 我是Python / Django的初学者,我尝试做一个表单应用程序,而且我无法正常使用ForeignKeys。例如:我有一个名为Station的表和另一个名为Person的表。在Person Table中,我得到了一个引用Station表的Station字段。我的表单工作正常,但信息的显示并不适用。当我打开ModelChoiceField时,它不是显示Station的名称或ID,而是在每个对象中向我显示:。有没有办法(可能)定义哪个字段会出现在我的表格上?这些是我的文件:
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 :(得分:1)
你有一个关于Station的__unicode__
方法的错字(它只有半魔法;)。
必须如此:
class Station(models.Model):
station_name = models.CharField(max_length=50)
def __unicode__(self):
return self.station_name