我尝试在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"而下降。我想让它显示名称。
所以我的问题是,如何按名字显示下拉账户? :(我已经尝试过了。
答案 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以了解约定详情。