我是Django的新手,正在创建一个应用程序,我需要在其中显示用于用户电子邮件的复选框。问题是,启动服务器时会填充元组,但是不会直接显示新用户的电子邮件,因此我需要重新启动服务器。我该怎么做呢? 这是我的forms.py:
from django import forms
from .models import User
class CustomUserCreationForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput)
class Meta:
model = User
fields = ('first_name', 'last_name', 'email', 'password')
class Login(forms.Form):
email = forms.EmailField(max_length=250)
password = forms.CharField(widget=forms.PasswordInput)
class AuthUserCheckbox(forms.Form):
def __init__(self, *args, **kwargs):
super(AuthUserCheckbox, self).__init__(*args, **kwargs)
这是我的模型。py:
from __future__ import unicode_literals
from django.db import models
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
username = None
email = models.EmailField(unique=True)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['first_name', 'last_name']
答案 0 :(得分:1)
您需要MultipleChoiceField
和CheckboxSelectMultiple
小部件,您可以像这样在__init__
中的初始化时填充该小部件:
class AuthUserCheckbox(forms.Form):
email = forms.MultipleChoiceField(choices = [], widget=forms.CheckboxSelectMultiple, required=True)
def __init__(self, *args, **kwargs):
super(AuthUserCheckbox, self).__init__(*args, **kwargs)
self.fields['email'] = forms.MultipleChoiceField(choices=[ o.email for o in User.objects.all()]) #your query here
答案 1 :(得分:0)
您将必须使用ModelMultipleChoiceField。例如:
class AuthUserCheckbox(forms.Form):
emails = forms.ModelMultipleChoiceField(queryset=User.objects.all())
def __init__(self, *args, **kwargs):
super(AuthUserCheckbox, self).__init__(*args, **kwargs)