Я пытаюсь обновить существующие объекты из базы данных с помощью формы. Что мне нужно получить: 1 отображение данных, подлежащих изменению, 2, изменение данных на новые 3, отображение нового.Обновить объекты - форма НЕ действительна - с трудностями Django
Мне удалось выполнить шаг 1, но это тайна для шага 2. Не могли бы вы дать мне руку?
Вот мой код:
Views.py
определение функции MODEC (запрос, etatcivil_id): если не request.user.is_authenticated(): возвращение render_to_response ('резюме/connexionrequired .html ')
k = request.user.email
if request.method == 'POST':
ec = Etatcivil.objects.get(id=etatcivil_id)
form = EtatCivilForm(data=request.POST, instance=ec)
form.auteur=k
print "Product Post"
if form.has_changed():
print "form has changed"
if form.is_valid():
print "Display Form"
form.save(commit=False)
fom.save()
return HttpResponseRedirect('/cv/creer')
else:
eta = Etatcivil.objects.get(id= etatcivil_id)
form = EtatCivilForm(eta.__dict__)
args = {}
args.update(csrf(request))
args['form'] = form
return render_to_response('cv/modec.html', args)`
Model.py
from django.db import models
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, BaseUserManager
from django.conf import settings
class MyUserManager(BaseUserManager):
def create_user(self, email, password=None):
if not email:
raise ValueError('Users must have an email address')
if not username: username = email.split('@')[0]
user = self.model(
email= MyUserManager.normalize_email(email))
user.set_password(password)
user.save(using=cv._db)
class MyUser(AbstractBaseUser):
email = models.EmailField(max_length=254, unique=True, db_index=True)
registration = models.DateField(auto_now_add=True)
objects = MyUserManager()
USERNAME_FIELD = 'email'
class Meta:
unique_together = ('email',)
class Etatcivil(models.Model):
Auteur = models.ForeignKey(settings.AUTH_USER_MODEL, 'email')
Nom = models.CharField(max_length=70)
Prenom = models.CharField(max_length=70)
Date_de_Naissance = models.DateTimeField()
Email = models.CharField(max_length=70)
Telephone = models.CharField(max_length=15)
Reseaux = models.CharField(max_length=30)
и modec.html
<!DOCTYPE html>
{% load staticfiles %}
<link rel="stylesheet" type="text/css" href="{% static 'cv/style/style.css' %}" />
<html style="width: 100%; min-width:50%;">
<head>
<meta charset="utf-8" />
<title> Créer votre CV</title>
</head>
<body>
<header>
<table>
<tr style=" topmargin: 0px; leftmargin: 0px ">
<td style="padding: 0px; topmargin: 0px; leftmargin: 0px; width=70% ">
<img src=" {% static "cv/photos/logo.png" %}"/>
</td>
<td class="menutd">
<a style="color: #404040;" href="/cv/creer"> Enregistrer mes Informations </a>
</td>
<td class="menutd">
{% block content %}
<a style="color: #404040;" href="/cv/generer"> Generer un CV </a>
</td>
<td class="menutd">
<a style="color: #404040;" href="/login/off" align="left"> Deconnection </a>
</td>
</tr>
</table>
</header>
<div style=" width: 50%; Height: 100%; line-height: 100%; margin-top: 150px; margin-bottom: auto; margin-left: auto; margin-right: auto; vertical-align: middle; text-align: center; font-family: Helvetica Neue; font-size: 36px; color: #ffffff">
<form action="" method="POST"> {% csrf_token %}
{% for field in form %}
<input type="{{ field.Charfield }}" name="{{ field.name }}" value="{{ field.value }}"> </input><br />
{% endfor %}
<input type="submit" name="valider mon etat civil" value="Valider Article">
</form>
{% endblock %}
</div>
</div>
</body>
</html>
Как вы думаете, я не прав?
Заранее спасибо ..
EDIT: Оказывается, что форма не является действительным. Есть идеи ?
Вы читали документы Django? Они очень хороши и на самом деле объясняют, как сделать почти то, что вам нужно: https://docs.djangoproject.com/en/dev/topics/forms/modelforms/ – Ben
Да. Я хочу обновить/изменить уже существующий объект. Не создавайте новый. – Ambroise