我查看了很多示例,但無法弄清楚如何在正確鏈接它們的同時使用當前已通過身份驗證的用戶執行此操作。基本上我想要通過唯一的用戶ID或用戶名與相關的項目提交更新到數據庫。與用戶認證的一對多關係
用戶是獨一無二的,但他們可以在監視列表中包含衆多項目。用戶提交,目前已登錄並通過身份驗證。
models.py
from django.contrib.auth.models import User
class UserProfile(models.Model):
user = models.OneToOneField(User)
first_name = models.CharField(max_length=20)
last_name = models.CharField(max_length=20)
dob = models.DateField(blank=True, null=True)
city = models.CharField(max_length=30)
country = models.CharField(max_length=20)
def __unicode__(self):
return unicode(self.user)
class WatchList(models.Model):
user = models.ForeignKey(UserProfile)
product = models.CharField(max_length=5)
views.py
if form.is_valid():
obj = form.save(commit=False)
obj.user = request.user.id
obj.save()
我怎樣才能鏈接兩個型號認證?更新1錯誤追蹤後
class UserProfile(models.Model):
user = models.OneToOneField(User)
和
obj.user = UserProfile.objects.get(user=request.user)
Traceback:
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
114. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\News\webservice\stoxspy\mysiteapp\views.py" in watchlist
73. obj.user = UserProfile.objects.get(user=request.user)
File "C:\Python27\lib\site-packages\django\db\models\base.py" in save
545. force_update=force_update, update_fields=update_fields)
File "C:\Python27\lib\site-packages\django\db\models\base.py" in save_base
573. updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
File "C:\Python27\lib\site-packages\django\db\models\base.py" in _save_table
654. result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
File "C:\Python27\lib\site-packages\django\db\models\base.py" in _do_insert
687. using=using, raw=raw)
File "C:\Python27\lib\site-packages\django\db\models\manager.py" in _insert
232. return insert_query(self.model, objs, fields, **kwargs)
File "C:\Python27\lib\site-packages\django\db\models\query.py" in insert_query
1511. return query.get_compiler(using=using).execute_sql(return_id)
File "C:\Python27\lib\site-packages\django\db\models\sql\compiler.py" in execute_sql
898. cursor.execute(sql, params)
File "C:\Python27\lib\site-packages\django\db\backends\util.py" in execute
69. return super(CursorDebugWrapper, self).execute(sql, params)
File "C:\Python27\lib\site-packages\django\db\backends\util.py" in execute
53. return self.cursor.execute(sql, params)
File "C:\Python27\lib\site-packages\django\db\utils.py" in __exit__
99. six.reraise(dj_exc_type, dj_exc_value, traceback)
File "C:\Python27\lib\site-packages\django\db\backends\util.py" in execute
53. return self.cursor.execute(sql, params)
File "C:\Python27\lib\site-packages\django\db\backends\sqlite3\base.py" in execute
450. return Database.Cursor.execute(self, query, params)
Exception Type: IntegrityError at /watchlist/
Exception Value: column user_id is not unique
檢查更新的帖子,說實話,我看過的頁面太長,然後發佈,我想我自我更糊塗 – rodling
看到我更新的答案。 – Darwin
'列user_id不是唯一的' ''user_id「整數非空參考」mysiteapp_userprofile「(」id「)' – rodling