장고

2013-07-02 1 views
1

나는 사용자가 바로 메일을 전송하지 않는 경우장고

초안 기능은 사용자 정의 UserModel를 사용하여 내 간단한 메시지 응용 프로그램에 대한 초안 기능을 구현하기 위해 노력하고있어하지만이 저장 메일, 초안 기능의 문제를 보내 그것.

내 모델을 사용하여 임시 기능을 구현하는 방법을 알아 내는데 어려움이 있습니다.

메일을 보내는 방법을 알아낼 수 있습니다.

@login_required 
def Create(request): 
    person = Person.objects.get(user=request.user) 
    form = NewMessageForm() 
    if request.POST.get('send', False): 
     form = NewMessageForm(request.POST) 
     if form.is_valid(): 
      recipient = form.cleaned_data['recipient'] 
      subject = form.cleaned_data['subject'] 
      message = form.cleaned_data['message'] 
      thread = Thread.objects.create(subject=subject,user=request.user) 
      recipient = User.objects.get(username=recipient) 
     message = Message.objects.create(user=request.user,recipient=recipient,body=message,thread=thread) 
      return HttpResponseRedirect(reverse('world:message')) 

    elif request.POST.get('save', False): 
     #How can I save it as a draft? 

    return render(request,'create.html',{'messages':messages,'form':form,'person':person}) 

모델

class Thread(models.Model): 
    subject = models.CharField(max_length=100, blank=True) 
    user = models.ForeignKey(User) 


class Message(models.Model): 
    user = models.ForeignKey(User, related_name='sender') 
    recipient = models.ForeignKey(User, related_name='recipient') 
    created = models.DateTimeField(auto_now_add=True) 
    body = models.CharField(max_length=1000) 
    read = models.BooleanField(default=False) 
    trash = models.BooleanField(default=False) 
    sentmessage = models.BooleanField(default=False) 
    thread = models.ForeignKey(Thread) 


    def __unicode__(self): 
     return self.body 

형태

class NewMessageForm(forms.ModelForm): 
    recipient = forms.CharField(required=True,max_length=1) 
    message = forms.CharField(widget=forms.Textarea,required=True,max_length=1) 
    checkbox = forms.BooleanField(required=False) 
    def clean_recipient(self): 
     recipient = self.cleaned_data['recipient'] 
      try: 
       recipient = User.objects.get(username=recipient) 
      except User.DoesNotExist: 
       raise forms.ValidationError("This username does not exist") 
      return recipient 
class Meta: 
    model = Thread 
    fields = ('subject',) 

템플릿

<form method="POST" > 
    {% csrf_token %} 
    {{form.recipient}} 
    {{form.subject}} 
    {{form.message}} 
    <input type="submit" value="send" name="_send" /> 
    <input type="submit" value="save" name="_save" /> 
</form> 

답변

1
현재 메시지 초안인지 확인하는 메시지에서 BooleanField "초안"을 추가 할 수

또는 필터링하지 않고 상태 초안과 모든 메시지를 제외하여 사서함을 recipient = current_user.

메시지를 보내면 초안을 0으로 설정하고 메시지가 저장되면 1을 논리로 수정해야합니다.

편집 : messagesent 특성이 표시되지 않았습니다. 당신은 그 comportement 위해 그것을 사용할 수 있었다, 나는 그것이 적절하다고 생각한다 :

+0

나는 내가 나 자신으로받는 사람을 넣었던 것을 안다? – JackRoster

+0

아니요, 초안이 1 인 메시지를 제외하여받는 사람이 본 메시지 목록을 필터링하면됩니다. 'Messages.objects.filter (recipient = current_user, draft = 0)'와 비슷한 것 –

+0

받는 사람이 지정되지 않은 경우 ,받는 사람 필드를 선택 사항으로 지정하여 '없음'으로 설정할 수 있습니다. http://stackoverflow.com/questions/6619984/can-i-make-the-foreign-key-field-optional-in-django-model I) –