Python Django使用外键的属性填充ChoiceField

Python Django使用外键的属性填充ChoiceField,python,django,Python,Django,请对我宽容点,因为我才刚开始。我正在制作一个乐器网站,人们可以在这里发布他们的乐器出售。在表单上,我希望他们使用一个下拉菜单来帮助选择类别(例如长号、小号、萨克斯管等) 当我使用以下代码时,我会在下拉列表中看到如下内容: 类别对象 类别对象 类别对象 这些似乎是正确的分类对象,但我需要的是它们从数据库中说出“喇叭”、“长号”、“萨克斯管”等 表格 型号 同样,如何让下拉列表显示每个选项的仪器类别而不是“类别对象”?提前感谢在您的模型上实现\uuuuunicode\uuuuu(python 3中

请对我宽容点,因为我才刚开始。我正在制作一个乐器网站,人们可以在这里发布他们的乐器出售。在表单上,我希望他们使用一个下拉菜单来帮助选择类别(例如长号、小号、萨克斯管等)

当我使用以下代码时,我会在下拉列表中看到如下内容:


类别对象 类别对象 类别对象

这些似乎是正确的分类对象,但我需要的是它们从数据库中说出“喇叭”、“长号”、“萨克斯管”等

表格

型号


同样,如何让下拉列表显示每个选项的仪器类别而不是“类别对象”?提前感谢在您的模型上实现
\uuuuunicode\uuuuu
(python 3中的
\uuuu str\uuuuu
),以返回您希望在选项列表中看到的内容:

class Category(models.Model):
    instrumentCategory=models.CharField(max_length=50,blank=True,null=True)

    def __unicode__(self):
        return self.instrumentCategory
这是因为Django不会自动知道如何表示每个对象


查看这里提到的兼容python到unicode的装饰程序:

完美!上面的代码是正确的,但我只需将其添加到我的模型中:

def __str__(self):
    return self.instrumentCategory

这是因为您使用的是Python 3,正如Robert在回答中提到的,请记住将答案标记为正确:)
class Category(models.Model):
    instrumentCategory=models.CharField(max_length=50,blank=True,null=True)

    def __unicode__(self):
        return self.instrumentCategory
def __str__(self):
    return self.instrumentCategory