python - 如何在 django 的布尔字段中添加单选按钮
问题描述
我有一个自定义用户模型。当我选择复选框时进入注册表单时,请选择它们的布尔字段。我想限制用户在注册表单中只能选择一个布尔字段的布尔字段。我想在布尔字段中添加一个单选按钮。有没有办法在布尔字段中添加单选按钮?
表格.py
class SignupForm(forms.ModelForm):
class Meta:
model = User
fields = [
"name",
"username",
"email",
"password",
'is_superuser',
'is_Customer',
'is_Service_Provider'
]
widgets = {
'name': forms.TextInput(attrs={'class': 'form-control'}),
'username': forms.TextInput(attrs={'class': 'form-control'}),
'email': forms.TextInput(attrs={'class': 'form-control'}),
'password': forms.TextInput(attrs={'class': 'form-control'}),
'is_superuser' : forms.CheckboxInput('input_type' == 'radio'),
'is_Service_Provider' :forms.CheckboxInput('input_type' == 'radio'),
'is_Customer' : forms.RadioSelect(),
}
模型.py
class User(AbstractBaseUser, PermissionsMixin):
username = models.CharField(max_length=254, unique=True)
name = models.CharField(max_length=254, null=True)
email = models.EmailField(max_length=254, null=True)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
is_Customer = models.BooleanField(default=True)
is_Service_Provider = models.BooleanField(default=False)
phone_regex = RegexValidator( regex = r'^\+?1?\d{9,10}$', message = "Phone number must be in the form of =919999999999")
phone = models.CharField('Phone', validators = [phone_regex], max_length=254, unique=True, null=True, blank=True)
last_login = models.DateTimeField(null=True, blank=True)
date_joined = models.DateTimeField(auto_now_add=True)
USERNAME_FIELD = 'username'
EMAIL_FIELD = 'email'
REQUIRED_FIELDS = []
objects = UserManager()
def get_absolute_url(self):
return "/users/%i/" % self.pk
def get_username(self):
return self.username
解决方案
您需要有一个表单域并有 3 个不同的选项作为选择:
isSuperUser = 'Is Superuser'
isCustomer = 'Is Customer'
isServiceProvider = 'Is Service Provider'
User_choices = (
(isSuperUser, 'Is Superuser'),
(isCustomer, 'Is Customer'),
(isServiceProvider, 'Is Service Provider')
)
然后在您的表格中:
Usertype = forms.MultipleChoiceFieldChoiceField(widget=forms.RadioSelect, choices=User_choices)
此处文档中的更多信息:https ://docs.djangoproject.com/en/3.0/ref/forms/widgets/#widgets-inheriting-from-the-select-widget
推荐阅读
- php - HTML 仅在 Wordpress 循环中打印一次
- date - 重新编码日期,使隔夜时间计为一天
- excel - 为什么 Worksheet.Hyperlink.Range 在迭代工作表时有时会返回一系列范围,而不是仅返回一个范围?
- docker - dotnet core 限制内存使用
- javascript - 在输入字段上输入后如何添加符号?
- ruby-on-rails - 在 ruby 中合并两个哈希值
- r - 按名称在指定列上使用 dplyr 的线性回归模型
- regex - 在正则表达式中捕获组
- laravel - 从 laravel 集合中的选择组件中保存名称而不是 id
- android - 数据绑定从字符串中删除 html 标签