【问题标题】:Using Django ModelForm with FK将 Django ModelForm 与 FK 一起使用
【发布时间】:2015-03-31 13:59:41
【问题描述】:

我会开始为我糟糕的英语道歉,这不是我的母语。反正... 我是 Python/Django 的初学者,我正在尝试做一个表单应用程序,但我无法正确使用 ForeignKeys。例如:我有一张名为 Station 的桌子和另一张名为 Person 的桌子。在 Person Table 中,我得到了一个引用 Station 表的 Station 字段。我的表单工作正常,但信息显示却不行。当我打开 ModelChoiceField 时,它不会显示 Station 的名称或 id,而是在每个对象中显示给我:.有没有办法(可能)定义哪个字段将出现在我的表单上?这些是我的文件:

模型.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>

【问题讨论】:

  • __unicode in Station 应该是 __unicode__ 如果我理解正确的话。
  • 天啊*,就这么简单。成功了,谢谢!

标签: python django foreign-keys modelform


【解决方案1】:

你在 Station 的 __unicode__ 方法上有一个错字(这只是半个魔法;)。

一定是这样的:

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

【讨论】:

    猜你喜欢
    • 2018-07-18
    • 2019-07-17
    • 2011-04-05
    • 2012-10-17
    • 2011-08-12
    • 2020-07-08
    • 2013-06-19
    • 2015-11-24
    相关资源
    最近更新 更多