Как я могу получить данные модели формы? - PullRequest
0 голосов
/ 18 февраля 2019

Я создаю модель пользователя и хочу прикрепить ее к форме модели, как показано ниже.Как я могу получить электронную почту каждого пользователя с помощью оболочки, обращающейся к базе данных mysql?

Я пытался получить данные по оболочке, но предыдущий сказал, что у объекта нет атрибута электронной почты, а второй сказал, что у forms.py нет объекта.

from Project.User.models import UserProfile as p
p.objects.filter(is_active=True).first().email //    
from Project.User.forms import ClientProfileForm as p
p.objects.filter(is_active=True).first().email 

Код:

models.py:

class UserProfile(BaseModel):
    user = models.OneToOneField(User, primary_key=True, on_delete=models.CASCADE, verbose_name='client')
    name = models.CharField('name',max_length=30, null=False, help_text="Name")
    gender = models.CharField('sex',max_length=1, help_text="Sex")

    class Meta:
        verbose_name = 'Client'
        verbose_name_plural = 'Client'

    def __str__(self):
        return 'client:%s' % self.user

forms.py:

class ClientProfileForm(forms.ModelForm):
    email = forms.EmailField()

    class Meta:
        model = UserProfile
        fields = ("user", "name", "gender")

Ответы [ 3 ]

0 голосов
/ 18 февраля 2019

from Project.User.forms import UserProfile as p

Эта строка неверна, поскольку имя вашей формы ClientProfileForm, а не UserProfile.Вот почему вы получаете ошибку forms.py has no object

0 голосов
/ 18 февраля 2019

Перед отправкой данных в форме нет данных, поэтому вы не можете получить пользователя и его электронную почту из вашей оболочки.

Формы используются, например, для получения данных из шаблонов HTML и проверки их правильности.эти данные, а затем добавить эти данные в базу данных.

Если вы заполните форму, вы можете получить доступ к данным, которые были очищены с вашей точки зрения, например:

form = ClientProfileForm(request.POST)
if form.is_valid():
    print(form.cleaned_data['my_form_field_name'])

Также вы можетеустановить некоторые значения по умолчанию для форм.Пример здесь:

Django формирует начальный пример для stackoverflow

И, наконец, для вашей проблемы:

Вы пытаетесь получить доступэлектронное письмо от UserProfile, в котором нет поля электронной почты, но модель User имеет.

, поэтому вы можете получить доступ к электронной почте следующим образом:

from Project.User.models import UserProfile as p

# Get the first profile and then get the email from user model
p.objects.filter(is_active=True).first().user.email 
0 голосов
/ 18 февраля 2019

Вы пробовали использовать

p.objects.filter(is_active=True).first().user.email
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...