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

时间:2016-01-07 19:32:24

标签: django forms 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"和"巴小姐"。如果我然后加载HTML表单,我会在我的下拉菜单中看到2个选项但不是" Mister Foo"和"小姐吧"。它只会随着文本" accounts object"而下降。我想让它显示名称。

enter image description here

所以我的问题是,如何按名字显示下拉账户? :(我已经尝试过了。

1 个答案:

答案 0 :(得分:1)

__unicode__班级使用accounts

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

    def __unicode__(self):
        return self.name

顺便说一下,使用accounts作为python类名称是糟糕代码样式。它应该是capfirst和单一形式,如Account。查看pep8 doc以了解约定详情。