Sur mon site Web, chaque utilisateur a son propre identifiant et mot de passe, donc si un utilisateur est connecté, il peut ajouter, modifier et mettre à jour son enregistrement uniquement.Django modifier et mettre à jour des données avec MySql
models.py est
class Report(models.Model):
user = models.ForeignKey(User, null=False)
name = models.CharField(max_length=20, null=True, blank=True)
views.py
def profile(request):
if request.method == 'POST':
reportform = ReportForm(request.POST)
if reportform.is_valid():
report = reportform.save(commit=False)
report.user = request.user
report.save()
return redirect('/index/')
else:
report = Report.objects.get()
reportform = ReportForm(instance=report)
return render_to_response('report/index.html',
{ 'form': reportform, },
context_instance=RequestContext(request))
Un utilisateur doit avoir une âge et il devrait être dans une rangée de données dans la base de données.
- S'il n'y a aucune donnée dans la base de données, c'est-à-dire s'il s'agit d'une première fois pour l'utilisateur, il est permis à l'utilisateur d'insérer des données dans la base de données.
- Si l'utilisateur rouvre une page, les données insérées doivent être affichées en mode modifiable.
Il est tout comme le scénario « si un nouvel utilisateur crée un compte gmail, il peut créer le compte à la première fois et encore il ne peut modifier et mettre à jour leurs coordonnées » .La même procédure que je veux mettre en œuvre dans mon site Web.
Je l'ai essayé avec le code ci-dessus, je ne suis pas en mesure d'insérer les données dans la base de données. J'ai essayé avec l'insertion directe dans mysql db et vérifié, ainsi les données insérées je peux voir en mode éditable mais si je change cela et sauve, il crée une autre rangée de données dans DB.
Ensuite, si je vais l'insérer pour la première fois, je récupère la trace suivante.
Environment:
Request Method: GET
Request URL: http://192.168.100.10/report/index/
Django Version: 1.3.7
Python Version: 2.7.0
Installed Applications:
['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'django.contrib.admindocs',
'django.contrib.humanize',
'django.contrib.staticfiles',
'south',
'collect',
'incident',
'report_settings']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.transaction.TransactionMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware')
Traceback:
File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "/root/Projects/ir/incident/views.py" in when
559. report = Report.objects.get()
File "/usr/lib/python2.7/site-packages/django/db/models/manager.py" in get
132. return self.get_query_set().get(*args, **kwargs)
File "/usr/lib/python2.7/site-packages/django/db/models/query.py" in get
349. % self.model._meta.object_name)
Exception Type: DoesNotExist at report/index/
Exception Value: Report matching query does not exist.
I a appliqué les changements de vue comme u dit, mais il montre une erreur, partiellement je franchis maintenant je suis face à l'erreur suivante (1048, "Colonne 'id_utilisateur' ne peut pas être nul") –
Cela implique que la ligne 'report.user = request.user' n'a pas été exécutée. – jro
bien, une idée de comment résoudre ce problème? –