В случае апдейта записи в БД происходит следующее:
>>> from tutortalk.models import LessonCycle
>>> c = LessonCycle.objects.get(pk=1)
>>> c.name
u'How to do absolutely nothing.'
>>> c.lesson_cycle_id
1
>>> c.name = 'How to do absolutely everything'
>>> c.save()
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/aidaho/Documents/projects/tutortalk/tutortalk/tutortalk/models.py", line 190, in save
super(LessonCycle, self).save(self, *args, **kwargs)
File "/usr/lib/python2.6/dist-packages/django/db/models/base.py", line 463, in save
self.save_base(using=using, force_insert=force_insert, force_update=force_update)
File "/usr/lib/python2.6/dist-packages/django/db/models/base.py", line 551, in save_base
result = manager._insert([self], fields=fields, return_id=update_pk, using=using, raw=raw)
File "/usr/lib/python2.6/dist-packages/django/db/models/manager.py", line 203, in _insert
return insert_query(self.model, objs, fields, **kwargs)
File "/usr/lib/python2.6/dist-packages/django/db/models/query.py", line 1576, in insert_query
return query.get_compiler(using=using).execute_sql(return_id)
File "/usr/lib/python2.6/dist-packages/django/db/models/sql/compiler.py", line 910, in execute_sql
cursor.execute(sql, params)
File "/usr/lib/python2.6/dist-packages/django/db/backends/util.py", line 40, in execute
return self.cursor.execute(sql, params)
File "/usr/lib/python2.6/dist-packages/django/db/backends/sqlite3/base.py", line 337, in execute
return Database.Cursor.execute(self, query, params)
IntegrityError: PRIMARY KEY must be unique
Модель выглядит вот так:
class LessonCommon(Model):
"""
Common fields agregator.
"""
hours = PositiveIntegerField(help_text=_('Course duration in hours'))
# Could be set to academic hour (50 min) , usual (60 min)
# or manual (1h 15 min):
hour_minutes = PositiveSmallIntegerField(help_text=_('Hour length'))
# Break between lessons:
minutes_break = PositiveSmallIntegerField(help_text=_('Break length'))
class Meta:
abstract = True
class LessonCycle(LessonCommon):
"""
A single lesson in the specific educational cycle.
A lesson could override (or define more exactly) some of the declared
course features.
"""
def __unicode__(self):
return self.name
def save(self, *args, **kwargs):
"""
Denormalization.
"""
self.course = self.cycle.course
self.user = self.lesson.user
self.name = self.lesson.name
super(LessonCycle, self).save(self, *args, **kwargs)
lesson_cycle_id = AutoField(primary_key=True)
cycle = ForeignKey('Cycle')
# For denormalization
course = ForeignKey('Course')
lesson = ForeignKey('Lesson')
# Denormalization: lesson owner...
user = ForeignKey('Teacher')
# ...and lesson name
name = CharField(max_length=255)
# These is a calculated value:
date_start = DateTimeField(help_text=
_('Current lesson launch time'))
date_finish = DateTimeField()
# If True, lesson price should be zero.
is_free_lesson = BooleanField(default=False)
# Flag will be configured by teacher in his course:
requests_allowed = BooleanField(
help_text=_('Could student send a request on this lesson'))
active = BooleanField()
Помогите пожалуйста понять, где допущена ошибка.