0
我一直堅持這個問題的好 - 表單能夠提交但不會保存到數據庫。我甚至通過一個表單發送了一封電子郵件,但它不會保存。我正在製作一個CRM,並且有一個聯繫人,通信和電子郵件應用程序。迄今爲止,這種觀點有三種形式,每種模式都有一種形式。聯繫表格可以保存到數據庫。另外兩個能夠提交但不能保存。兩種不保存的表單都可以重定向到刷新的聯繫人詳細信息,其實例和數據仍可在表單上找到。所以它必須正確儲存,而不是儲存。我不確定我錯過了什麼。讓我知道你是否需要我添加其他文件。django - 表單提交的信息,但不會保存到數據庫
views.py ----------
def contact_detail(request, contact_id):
contact = get_object_or_404(Contact, pk=contact_id)
if request.method == 'POST' and 'contact' in request.POST:
contactForm = ContactForm(request.POST, prefix='contact', instance=contact)
if contactForm.is_valid():
contactForm.save()
else:
contactForm = ContactForm(prefix='contact', instance=contact)
if request.method == 'POST' and 'email' in request.POST:
contactForm = ContactForm(prefix='contact', instance=contact)
messageForm = MessageForm(request.POST, prefix='email', instance=contact)
if messageForm.is_valid():
messageForm.save()
form_email = contact.contact_email
form_message = messageForm.cleaned_data.get("message")
subject = messageForm.cleaned_data.get("subject")
from_email = settings.EMAIL_HOST_USER
to_email = [from_email]
contact_message = "%s" % (
form_message)
send_mail(subject,
contact_message,
from_email,
to_email,
fail_silently=True)
else:
messageForm = MessageForm(prefix='email', instance=contact)
company = Company.objects.filter(contact=contact_id)
communications = Communication.objects.filter(contact=contact_id).order_by('-comm_date')
if request.method == 'POST' and 'comm' in request.POST:
contactForm = ContactForm(prefix='contact', instance=contact)
messageForm = MessageForm(prefix='email', instance=contact)
commForm = CommForm(request.POST, prefix='comm', instance=contact)
if commForm.is_valid():
commForm.save()
redirect_url = reverse(
'contacts:contact_detail',
args=(contact_id,)
)
return HttpResponseRedirect(redirect_url)
else:
commForm = CommForm(prefix='comm')
context = {
'contact': contact,
'contactForm': contactForm,
'company': company,
'messageForm': messageForm,
'communications': communications,
'commForm': commForm}
return render(request, 'contacts/contact_detail.html', context)
forms.py ----------
from django import forms
from communications.models import Communication
from django.forms import ModelForm
class CommForm(ModelForm):
class Meta:
model = Communication
fields = '__all__'
comm_form.html --- -------
<form action='' method='post'>{% csrf_token %}
{% for field in commForm %}
<div class='fieldWrapper'>
{% csrf_token %}
{{ field.errors }}
{{ field.label_tag }} {{ field }}
</div>
{% endfor %}
<p><input type='submit' name='comm' value='submit comm' /></p>
</form>
models.py ----------
from django.contrib.auth.models import User
from companies.models import Company
from contacts.models import Contact
class Communication(models.Model):
company = models.ForeignKey(Company, null=True, blank=True)
contact = models.ForeignKey(Contact, null=True, blank=True)
owner = models.ForeignKey(User, blank=True)
comm = models.TextField()
comm_date = models.DateTimeField(auto_now_add=True, null=True, blank=True)
你可以把模型文件進行通信嗎? – Bestasttung
剛剛添加了模型文件,謝謝。我通常不會爲外鍵擁有空值和空白,但我添加了它們以確保錯誤不在正確處理公司和聯繫人。 –
它看起來像通信失蹤的行動? – Jonathan