1
我試圖實現其使用自定義的usermodel的Django發送郵件,草稿功能問題
功能匯票是我的簡單消息應用的功能草案時,用戶不發送郵件直線距離,但節省了它。
我很難搞清楚如何使用我的模型實現草稿函數。
我能弄清楚如何發送郵件。
@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>
我看到所以我把收件人作爲我自己呢? – JackRoster
不,您只需過濾收件人看到的郵件列表,通過排除具有draft = 1的郵件即可。類似於'Messages.objects.filter(recipient = current_user,draft = 0)' –
如果未指定收件人,您可以通過將收件人字段設置爲可選,將其設置爲「無」:http://stackoverflow.com/questions/6619984/can-i-make-the-foreign-key-field-optional-in-django-model I認爲這是一個更好的選擇;) –