J'ai été bloqué sur ce problème pendant un bon moment - le formulaire est capable de soumettre mais ne sauvegardera pas dans la base de données. J'ai même envoyé un e-mail à travers le formulaire, mais cela ne sauvera pas. Je fais un CRM et ai une application de contact, de communication, et d'email. Cette vue a jusqu'à présent trois formes, une pour chaque modèle. Le formulaire de contact est en mesure d'enregistrer dans la base de données. Les deux autres sont capables de soumettre mais ne sauveront pas. Les deux formulaires qui ne sont pas sauvegardés peuvent tous deux être redirigés vers le détail de contact actualisé avec leur instance et les données encore disponibles sur le formulaire. Donc, il doit être stocké correctement, ne pas enregistrer. Je ne suis pas sûr de ce qui me manque. Faites-moi savoir si vous avez besoin de moi pour ajouter d'autres fichiers.django -formulaire envoie des informations mais n'enregistre pas dans la base de données
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)
pourriez-vous mettre le fichier des modèles pour la communication s'il vous plaît? – Bestasttung
vient d'ajouter le fichier des modèles, merci. Normalement je n'aurais pas les nulls et les blancs pour la clé étrangère mais je les ai ajouté pour m'assurer que l'erreur n'était pas dans le traitement correct de la compagnie et du contact. –
Il semble que l'action manque à la commaille? – Jonathan