Ошибка сохранения ModelForm (не удалось создать User_Message, поскольку данные не были проверены) - PullRequest
13 голосов
/ 19 марта 2011

Я натолкнулся на тему, которая казалась связанной с djangocode, но это не помогло. Я пытаюсь сохранить модель формы, и это исключение. Я думаю, что это может быть связано с двойной ссылкой на один и тот же внешний ключ в моей модели. Это также может быть связано с определением unique = True в одном из полей внешнего ключа. Я не знаю

class User_Message(models.Model):
   recipient=models.ForeignKey(User, unique=True, related_name="recipients")
   subject=models.CharField(max_length=100)
   sender=models.ForeignKey(User, related_name="senders")
   message=models.TextField(max_length=500)
sent=models.DateField(auto_now_add=True)

def __unicode__(self):
    return self.subject



if request.method=="POST" and request.POST['id_message']:
    messageform=User_MessageForm(request.POST)
    recipient=[]   #receiver of mail must be a list
    recipient.append(post.user)
    if messageform.is_valid:
        message=messageform.save(commit=False)
        message.sender=user
        message.recipient=post.user
        return HttpResponse('%s %s' %(user,post.user))
        message.save()

        #send the email
        subject=messageform.cleaned_data['id_subject']
        body=messageform.cleaned_data['id_message']

        try:
            send_mail(subject, body, sender, recipient)
        except BadHeaderError:
            return HttpResponse('Invalid header found.')

Это ошибка в строке "messageform.save (commit = False). Человек, я думал, что это утверждение было доказательством ошибки.

данные POST, полученные формой модели, содержат поля темы и сообщения. Эти данные успешно подтверждены моей моделью.

Это связанные имена, уникальные = True ... что дает?

Спасибо

1 Ответ

33 голосов
/ 19 марта 2011

Вот ваша проблема:

if messageform.is_valid:

Эта строка должна быть

if messageform.is_valid():

В основном, ошибка возникает из-за вызова save() в неправильной форме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...