Jestem nowy w Django i pracuję nad tworzeniem aplikacji, w której muszę wyświetlić pole wyboru dla użytkowników E-mail. Problem polega na tym, że krotka jest wypełniona po uruchomieniu serwera, ale nowi użytkownicy e-maile nie pojawiają się bezpośrednio i muszę ponownie uruchomić serwer. Jak mam to zrobić? To jest moje formularze.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)

To są moje modele.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
Vai 27 luty 2019, 08:10

2 odpowiedzi

Najlepsza odpowiedź

Będziesz musiał użyć ModelMultiplechoicefield. Na przykład:

class AuthUserCheckbox(forms.Form):

    emails = forms.ModelMultipleChoiceField(queryset=User.objects.all())

    def __init__(self, *args, **kwargs):
        super(AuthUserCheckbox, self).__init__(*args, **kwargs)
0
Aswin Murugesh 27 luty 2019, 05:29

Potrzebujesz MultipleChoiceField i CheckboxSelectMultiple widget można wypełnić w czasie inicjalizacji formularza czasu w __init__ w ten sposób:

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
Yugandhar Chaudhari 27 luty 2019, 05:26