0
我在与增加现有模型的客户的新副本,它看起来像烦恼:IntegrityError在非现有字段
class Client(models.Model):
user = models.OneToOneField(User) # Extending default user model
organization = models.CharField(max_length=40)
def __unicode__(self):
return self.user.first_name + " " + self.user.last_name
林进入外壳并键入此:
from django.contrib.auth.models import User
from mysiteApp.models import Client
user = User.objects.get(pk=2) # User with pk 2 exists
client = Client(user=user, organization="someorg") # copy creates succesfully
但随后,即时通讯试图通过 client.save()
保存副本,并即时得到这样的:
>>> client.save()
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 537, in save
force_update=force_update, update_fields=update_fields)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 641, in save_base
result = manager._insert([self], fields=fields, return_id=update_pk, using=using, raw=raw)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/manager.py", line 215, in _insert
return insert_query(self.model, objs, fields, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 1559, in insert_query
return query.get_compiler(using=using).execute_sql(return_id)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py", line 844, in execute_sql
cursor.execute(sql, params)
File "/usr/local/lib/python2.7/dist-packages/django/db/backends/util.py", line 41, in execute
return self.cursor.execute(sql, params)
File "/usr/local/lib/python2.7/dist-packages/django/db/backends/sqlite3/base.py", line 389, in execute
six.reraise(utils.IntegrityError, utils.IntegrityError(*tuple(e.args)), sys.exc_info()[2])
File "/usr/local/lib/python2.7/dist-packages/django/db/backends/sqlite3/base.py", line 387, in execute
return Database.Cursor.execute(self, query, params)
IntegrityError: mysiteApp_client.cID may not be NULL
的事情是,我在客户端模型之前,有这样的字段作为CID,至极真的有NOT NULL,但现在我不
manage.py SQL mysiteApp显示:
BEGIN;
CREATE TABLE "mysiteApp_client" (
"id" integer NOT NULL PRIMARY KEY,
"user_id" integer NOT NULL UNIQUE REFERENCES "auth_user" ("id"),
"organization" varchar(40) NOT NULL
)
;
manage.py syncdb没有改变,我该怎么办? 谢谢。
删除和重新创建表解决了这个问题,非常感谢。 – edikwow 2013-04-07 14:17:18