请放轻松我,因为我刚开始。我正在建立一个仪器网站,人们可以在那里发布他们的乐器。在表格上,我希望他们使用一个下拉菜单,有助于选择一个类别(如长号,小号,萨克斯等......)
当我使用以下代码时,我会在下拉列表中看到类似的内容:
类别对象 类别对象 类别对象
这些似乎是正确的类别对象,但我需要的是他们说"小号","长号","萨克斯管"来自数据库。
表格
class InventoryForm(forms.Form):
description = forms.CharField(required=False)
instrumentCategory = forms.ModelChoiceField(queryset=pmod.Category.objects.all())
模型
class Category(models.Model):
instrumentCategory=models.CharField(max_length=50,blank=True,null=True)
class Instrument(models.Model):
description=models.CharField(max_length=1000,blank=True,null=True)
instrumentCategory=models.ForeignKey(Category)
同样,如何让下拉列表显示仪器类别而不是"类别对象"对于每个选项?提前致谢
答案 0 :(得分:2)
在模型上实现__unicode__
({3}中的__str__
)以返回您想要在选择列表中看到的内容:
class Category(models.Model):
instrumentCategory=models.CharField(max_length=50,blank=True,null=True)
def __unicode__(self):
return self.instrumentCategory
这是因为Django并不自动知道你想如何表示每个对象。
查看此处提到的python_to_unicode_compatible
装饰器:https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/coding-style/#model-style
答案 1 :(得分:0)
完美!上面的代码是正确的,但我只需将其添加到我的模型中:
def __str__(self):
return self.instrumentCategory