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