python - 带有单选按钮的选择字段未出现在管理面板上
问题描述
这是我的乘客模型。当我转到我的默认 django 模型时,我可以看到每个字段,但看不到选择字段。我想要选择患者性别的选项。另外,我希望以我的形式出现。但是,首先在我的管理面板中没有字段名称性别。什么问题??
class Passenger(models.Model):
# book_id = models.OneToOneField(Booking, on_delete = models.CASCADE, primary_key = True)
First_name = models.CharField(max_length=200, unique=True)
Last_name = models.CharField(max_length=200, unique=True)
Nationality = models.CharField(max_length=200, unique=True)
Passport_No = models.CharField(max_length=200, unique=True)
Passport_Exp_Date = models.DateField(blank=False)
Contact_Number = models.CharField(max_length=200, unique=True)
Email = models.EmailField(max_length=200, unique=True)
Customer_id = models.CharField(max_length=50)
CHOICES = [('M', 'Male'), ('F', 'Female'), ('O', 'Others')]
Gender = forms.ChoiceField(label='Gender', widget= forms.RadioSelect(choices=CHOICES))
解决方案
您需要创建一个ModelForm
并使用它来覆盖ModelAdmin.form
以在管理站点中显示单选按钮,如下所示:
# models.py
class Passenger(models.Model):
# rest of the fields
CHOICES = [('M', 'Male'), ('F', 'Female'), ('O', 'Others')]
Gender = models.CharField(max_length=50,choices=CHOICES) # field name should be gender(all lowercase)
# admin.py
class PassengerForm(forms.ModelForm):
class Meta:
model = Passenger
fields = '__all__'
Gender = froms.ChoiceField(
label = 'Gender',
choices = [('M', 'Male'), ('F', 'Female'), ('O', 'Others')]
initial = 'M',
widget = forms.RadioSelect,
)
class PassengerAdmin(admin.ModelAdmin):
form = PassengerForm
admin.site.register(Passenger, PassengerAdmin)
仅供参考:根据PEP-8标准,属性名称应该是snake_case
.
更新
尝试这样使用radio_fields
:
class PassengerAdmin(admin.ModelAdmin):
radio_fields = {"Gender": admin.VERTICAL}
admin.site.register(Passenger, PassengerAdmin)
推荐阅读
- database - 运行 AWS Glue 爬网程序后无法查看表中的任何列
- c++ - 插入
> 优先队列 - python-3.x - 使用 scrapy.FormRequest 发布请求
- javascript - 想要使用 React.js 的材料 UI 从可折叠表中的状态填充行和列的动态数据
- ubuntu - 出现错误:curl:(5)无法解析代理:nvm的ec2实例中的http
- elasticsearch - 如何在执行 ElasticSearch 查询之前预先过滤数据?
- javascript - ngIf 每次都更改对齐方式
- c# - 我的密件抄送收件人没有收到电子邮件
- r - 为每次迭代将循环输出存储在 R 中的数据框中
- javascript - Webpack4 捆绑功能未定义