我需要为Player
创建一个表单,该表单在下拉字段中有Role
个对象作为选择,但显示的是字符串字段。
models.py
class Player(models.Model):
role = models.ForeignKey(role)
...
class Role(models.Model):
designation = models.CharField()
forms.py
class PlayerForm(ModelForm):
class Meta:
model = Player
fields = ['role']
假设我有三个role
对象,它们分别作为它们的designation
:Warrior
,Mage
,Rouge
,如何在其中显示一个PlayerForm
实例作为下拉列表,默认值为 no ,因此用户必须选择一个?
当前,这段代码将对象显示为对象本身(Role object (1)
,Role object (2)
,...)
答案 0 :(得分:2)
添加
def __str__(self):
return self.designation
进入您的Role
班级,您所有的选择都将变为真实姓名)
答案 1 :(得分:2)
我认为这主要是渲染对象的问题。您可以定义__str__
方法来指定应如何呈现Role
:
class Role(models.Model):
designation = models.CharField(max_length=128, unique=True)
def __str__(self):
return self.designation
您还可能希望将designation
设置为unique=True
字段,以防止使用相同的Role
定义两个designation
。