Как добавить переключатель в логическое поле в django - PullRequest
0 голосов
/ 06 августа 2020

У меня есть пользовательская модель Custom. Когда я go в форме регистрации, когда я устанавливаю флажок, выберите их логическое поле. Я хочу ограничить логическое поле, в котором пользователь может выбрать только одно логическое поле в форме регистрации. Я хочу добавить переключатель в логические поля. Есть ли способ добавить переключатель в логическое поле?

введите описание изображения здесь

Forms.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(),
            

        }
        

Models.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

1 Ответ

0 голосов
/ 06 августа 2020

Вам необходимо иметь одно поле формы и иметь 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 -наследование-от-виджета-выбора

...