如何在没有默认值的ModelForm中显示ForeignKey字段?

时间:2020-10-26 20:42:29

标签: python python-3.x django django-forms

我需要为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对象,它们分别作为它们的designationWarriorMageRouge,如何在其中显示一个PlayerForm实例作为下拉列表,默认值为 no ,因此用户必须选择一个?

当前,这段代码将对象显示为对象本身(Role object (1)Role object (2),...)

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