在我的網站中,每個用戶都有自己的登錄ID和密碼,所以如果用戶登錄,他只能添加,編輯和更新他的記錄。Django使用MySql編輯和更新數據
models.py是
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))
用戶應該有一個年齡,它應該是在數據庫中的一行數據。
- 如果數據庫中沒有數據,即如果是第一次給用戶,則允許用戶將數據插入到數據庫中。
- 如果用戶重新打開頁面,則插入的數據應顯示爲可編輯模式。
它就像場景「如果一個新用戶創建Gmail帳戶,他能在第一時間創建帳戶,以後又只能編輯和更新他們的詳細資料」。同樣的過程,我想在我的網站上實施。
我用上面的代碼試過了,我無法在數據庫中插入數據。我試圖直接插入到MySQL數據庫並進行檢查,所以插入的數據我可以在可編輯模式下看到,但如果我改變它並保存,它會在數據庫中創建另一行數據。
然後,如果我要第一次插入它,我會得到以下回溯。
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.
我申請鑑於變化ü說,但它顯示出一些錯誤,部分我現在清除我是面臨以下錯誤(1048,「列'user_id'不能爲空') – 2013-05-04 11:42:29
這意味着'report.user = request.user'行沒有執行。 – jro 2013-05-04 11:50:14
不錯,任何想法如何解決這個問題? – 2013-05-04 12:14:31