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

我需要创建一个表单,将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实例中将其显示为下拉列表,没有默认值,因此用户必须选择一个?


目前,此代码将对象显示为对象本身(Role object (1), Role object (2), ...)


慕田峪4524236
浏览 56回答 2
2回答

慕桂英546537

我认为这主要是渲染对象的问题。您可以定义一个__str__方法来指定如何Role呈现 s:class Role(models.Model):    designation = models.CharField(max_length=128, unique=True)    def __str__(self):        return self.designation您可能还希望将 设置designation为unique=True字段,以防止使用Role相同的定义两个designation。

饮歌长啸

添加def __str__(self):    return self.designation到你的Role班级,你的所有选择都变成实名)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python