양식을 제출할 수는 있지만 데이터베이스에 저장하지는 않습니다. 하나의 양식을 통해 이메일을 보냈지 만 저장되지는 않습니다. 저는 CRM을 만들고 연락, 의사 소통 및 전자 메일 응용 프로그램을 보유하고 있습니다. 이보기에는 각 모델에 대해 하나씩, 지금까지 세 가지 형식이 있습니다. 문의 양식은 DB에 저장할 수 있습니다. 다른 두 사람은 제출할 수는 있지만 저장하지는 못합니다. 저장하지 않는 두 가지 양식은 모두 인스턴스의 새로 고침 된 연락처 세부 정보로 다시 리디렉션 될 수 있으며 양식에서 계속 사용할 수 있습니다. 따라서 저장하지 않고 제대로 저장해야합니다. 내가 뭘 놓쳤는 지 모르겠다. 다른 파일을 추가해야하는 경우 알려주십시오.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
방금 모델 파일을 추가했습니다. 감사합니다. 나는 일반적으로 외래 키에 null과 공백이 없지만 오류를 회사와 연락처를 올바르게 처리하지 못하도록 추가했습니다. –
commform에 작업이 누락 된 것 같습니다. – Jonathan