У меня есть форма, в которой администраторы вводят список адресов электронной почты, разделенных запятыми, и форма проверяет каждый адрес электронной почты перед добавлением его в базу данных. Я был в состоянии сделать это очень хорошо с использованием моей собственной (не Django) формы. Я попытался перенести это на использование моделей, но столкнулся с несколькими проблемами. Вот код, который у меня сейчас есть -
# model
class EmailList(models.Model):
email = models.EmailField(blank=True)
network = models.ForeignKey(Network)
class EmailListForm(ModelForm):
class Meta:
model = EmailList
def clean_email(self):
if self.cleaned_data['email']:
valid_emails = []
for x in self.cleaned_data['email'].split(','):
x = x.strip().lower()
valid_emails.append(x)
return valid_emails
# in views
def email(request):
if request.POST.get('email'):
for email in form.cleaned_data.get('email'): ### ??
if form.is_valid(): ### ??
EmailList.objects.create(email = email, network=Network.objects.get(id=request.POST['network']))
return redirect('.')
У меня проблемы, потому что я не могу вызвать cleaned_data()
, пока форма не будет проверена, но форма не будет проверена в целом (будут только ее итерации). Можно ли построить эту функцию, используя формы Джанго? Если да, то как бы я справился с этой задачей? Спасибо.