mysql - 创建选择字段时出错
问题描述
我正在创建一个选择字段,但没有在模板上显示我的下拉菜单:
我的模型:
Inactive = 0
Active = 1
state_choices = (
(Inactive, 'Inactive'),
(Active, 'Active')
)
class Tipe(models.Model):
name = models.CharField(max_length=50)
details = models.CharField(max_length=100)
state = models.CharField(
max_length=1,
choices=state_choices,
default=Active,
)
class People(models.Model):
name=models.CharField(max_length=100)
phone=models.CharField(max_length=9, null=True)
state = models.CharField(
max_length=1,
choices=state_choices,
default=Active,
)
tipe = models.ForeignKey(Tipe, on_delete=models.CASCADE, null=True)
表格.py:
class PeopleForm(forms.Form):
name = forms.CharField(max_length=100)
name.widget.attrs.update({'class':'form-control', 'required': 'true' })
phone = forms.CharField(max_length=9)
phone.widget.attrs.update({'class':'form-control', 'minlength':'9'})
optionState = (('1', 'Active'),('0', 'Inactive'),)
state = forms.ChoiceField(choices=optionState )
state.widget.attrs.update({'class':'form-control', 'required':'true'})
tipe = forms.ModelChoiceField(queryset=Tipe.objects.filter(state=1), widget=forms.Select)
这返回我的模板类型:
<select id="id_tipe" name="tipe">
<option value="" selected="selected">---------</option>
<option value="1">Tipe object</option>
<option value="3">Tipe object</option>
</select>
不要在我的下拉列表中显示值只显示 Tipe 对象不显示 Tipes 模型的名称。请任何建议..谢谢!
解决方案
好吧,您从未指定应如何Tipe
打印对象,因此 Python/Django 使用此类模型的默认字符串表示。通常这'Tipe model (123)'
与123
对象的主键有关。
通过覆盖该__str__
函数,您可以定义一种自定义方式来呈现您的对象。例如,您可以使用如下.name
属性:
class Tipe(models.Model):
name = models.CharField(max_length=50)
details = models.CharField(max_length=100)
state = models.CharField(
max_length=1,
choices=state_choices,
default=Active,
)
def __str__(self):
return self.name
如果需要,您当然可以定义更复杂的东西,关键是您定义了一种方法来表示下拉列表中的对象以及在模板中显示对象的其他实例。
尽管这与问题无关,但我建议您将IntegerField
s 用于您的state
字段,因为0
它是整数,而不是字符(或字符串),因此更接近用于表示状态的值类型.
推荐阅读
- java - 尝试注入 module-info.java 时找不到模块
- ios - 为什么我需要滑动按钮才能使它们工作?
- python - 在缺少公共 x 值的两行之间填充
- go - 无法在 golang 中解组数组字段
- typescript - 带有 TSX 的 TypeScript 无法进行 linting,但可以正确转译
- python - 如何将 stdout.flush 函数应用于输入提示?
- python - Qt.Key_Space 不触发
- linux - 通过 GO 计算 CRC32 校验和
- java - 与直接 DB 调用/RESTful 服务调用相比,衡量 Hazelcast 数据检索速度的最佳方法是什么?
- python - networkx:以分层方式绘制