Запрос о существующей электронной почте находится в базе данных и не пуст - PullRequest
0 голосов
/ 05 июня 2019

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

forms.py

 def clean_email(self):
        email = self.cleaned_data.get('email')
        q = Email.objects.filter(email=email)
        if not email or q.count() == 0:
            return email
        raise forms.ValidationError('Podany email już widnieje w bazie')

models.py

class Email(models.Model):
    person = models.ForeignKey(Person, editable=False, on_delete=models.CASCADE)
    email = models.EmailField(max_length=70, blank=True)

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

Вы можете использовать exists()

Email.objects.filter(email=email).exists()

Возвращает True - экземпляр найден.

0 голосов
/ 05 июня 2019

вы можете написать validator для него:

from django.core.exceptions import ValidationError

def validate_email(value):
    q = Email.objects.filter(email=value)
    if not q.exists():
        return email
    raise ValidationError('Podany email już widnieje w bazie')

forms.py:

from django import forms

class EmailForm(forms.ModelForm):
    email = forms.EmailField(required=True, validators=[validate_email])

models.py:

from django.db import models

class Email(models.Model):
    person = models.ForeignKey(Person, editable=False, on_delete=models.CASCADE)
    email = models.EmailField(max_length=70, blank=True, validators=[validate_email])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...