为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕田峪4524236 2024-01-15 15:44:26
我需要创建一个表单,将Player对象Role作为下拉字段中的选择,但显示其字符串字段。models.pyclass Player(models.Model):    role = models.ForeignKey(role)    ...class Role(models.Model):    designation = models.CharField()forms.pyclass PlayerForm(ModelForm):    class Meta:        model = Player        fields = ['role']假设我有三个role对象designation,分别为:Warrior、Mage、Rouge,我如何在PlayerForm实例中将其显示为下拉列表,没有默认值,因此用户必须选择一个?目前,此代码将对象显示为对象本身(Role object (1), Role object (2), ...)
查看完整描述

2 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

我认为这主要是渲染对象的问题。您可以定义一个__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。


查看完整回答
反对 回复 2024-01-15
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

添加

def __str__(self):    return self.designation

到你的Role班级,你的所有选择都变成实名)


查看完整回答
反对 回复 2024-01-15
  • 2 回答
  • 0 关注
  • 129 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信