我在閱讀關於認證的Django文檔之前首先創建了用戶模型,因此我將所有屬性放在同一模型中。所以,後來我試圖將它分成用戶和用戶配置文件。但是,當我運行人口腳本時,它說,即使我看到創建它的SQL,也找不到用戶配置文件表。即使我可以看到它創建,爲什麼我會得到「表未找到」?
這些是連接到我導入的用戶模型的兩個類。
from django.contrib.auth.models import User
class UserProfile(models.Model):
user = models.OneToOneField(User)
profilepic = models.ImageField(blank=True)
city = models.ForeignKey(City)
slug = models.SlugField(unique=True)
def save(self, *args, **kwargs):
@property
def avg_rating(self):
return self.userrating_set.all().aggregate(Avg('rating'))['rating__avg']
class UserRating(models.Model):
user = models.ForeignKey(User)
comment = models.CharField(max_length=500)
for_username = models.CharField(max_length=128)
rating = models.IntegerField(default=5)
def __unicode__(self):
return unicode(self.rating)
這是人口腳本是哪裏的問題的一部分:
new_user = User.objects.get_or_create(username=username, email=email)[0]
#new_user.profilepic = profile_picture
new_user.firstname = first_name
new_user.secondname = last_name
new_user.save()
new_user_profile = UserProfile.objects.get_or_create(user=new_user, city=created_city)
new_user_profile.slug = username
new_user_profile.save()
這是運行腳本時出現錯誤:
Traceback (most recent call last):
File "C:\Users\bnbih\app_name\populationScript.py", line 108, in <module>
populate()
File "C:\Users\bnbih\app_name\populationScript.py", line 101, in populate
new_user_profile = UserProfile.objects.get_or_create()
File "C:\python27\lib\site-packages\django\db\models\manager.py", line 92, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "C:\python27\lib\site-packages\django\db\models\query.py", line 422, in get_or_create
return self.get(**lookup), False
File "C:\python27\lib\site-packages\django\db\models\query.py", line 351, in get
num = len(clone)
File "C:\python27\lib\site-packages\django\db\models\query.py", line 122, in __len__
self._fetch_all()
File "C:\python27\lib\site-packages\django\db\models\query.py", line 966, in _fetch_all
self._result_cache = list(self.iterator())
File "C:\python27\lib\site-packages\django\db\models\query.py", line 265, in iterator
for row in compiler.results_iter():
File "C:\python27\lib\site-packages\django\db\models\sql\compiler.py", line 700, in results_iter
for rows in self.execute_sql(MULTI):
File "C:\python27\lib\site-packages\django\db\models\sql\compiler.py", line 786, in execute_sql
[Finished in 0.8s with exit code 1]cursor.execute(sql, params)
File "C:\python27\lib\site-packages\django\db\backends\utils.py", line 81, in execute
return super(CursorDebugWrapper, self).execute(sql, params)
File "C:\python27\lib\site-packages\django\db\backends\utils.py", line 65, in execute
return self.cursor.execute(sql, params)
File "C:\python27\lib\site-packages\django\db\utils.py", line 94, in __exit__
six.reraise(dj_exc_type, dj_exc_value, traceback)
File "C:\python27\lib\site-packages\django\db\backends\utils.py", line 65, in execute
return self.cursor.execute(sql, params)
File "C:\python27\lib\site-packages\django\db\backends\sqlite3\base.py", line 485, in execute
return Database.Cursor.execute(self, query, params)
django.db.utils.OperationalError: no such table: mainapp_userprofile
你從哪裏看到「SQL創建它」?如果你運行'makemigrations' /'migrate',什麼都顯示出來了? – Sayse
當我運行SQLmigrate時,可以看到:CREATE TABLE「mainapp_userprofile」 – Sei