Django:如何在模型中正确使用外键?

Django: How to properly use the ForeignKey in a modelform?

我正在尝试在 Django 中创建一个 HTML 表单,我正在使用 Django modelforms 来执行此操作。在我的 models.py 文件中,我使用的是 "ForeignKey",这将被转换为带有 HTML 形式的选项的下拉菜单。这有效,我在我的视图中看到了一个下拉菜单。

models.py

class plants(models.Model):
    name = models.CharField(max_length=300, blank=True)
    active_account = models.ForeignKey('accounts')

    class Meta:
        unique_together = ('active_account', 'name')

class accounts(models.Model):
    name = models.CharField(max_length=200)
        url = models.CharField(max_length=200)

class PlantsForm(ModelForm):
    class Meta:
        model = plants
        fields = '__all__'

My_Cool_Django_ModelForm.html

{% for field in form %}
{{ field.label_tag }}
{{ field|addcss:'form-control'}}
{% endfor %}

问题

假设我在数据库中有 2 个帐户,分别是 "Mister Foo" 和“Miss Bar”。如果我随后加载 HTML 表单,我会在下拉菜单中看到 2 个选项,但没有 "Mister Foo" 和 "Miss Bar"。它只与文本 "accounts object" 一起下降,我希望它显示名称。

所以我的问题是,我怎样才能在下拉列表中按名称显示帐户? :( 我试过现场。

为您的 accounts 使用 __unicode__ class:

class accounts(models.Model):
    name = models.CharField(max_length=200)
    url = models.CharField(max_length=200)

    def __unicode__(self):
        return self.name

顺便说一下,使用 accounts 作为 python class 名称是 糟糕的 代码风格。它应该是 capfirst 和单一形式,如 Account。检查 pep8 doc 以获取约定详细信息。