Fixed inherited document primary key issue

This commit is contained in:
Harry Marr 2010-05-24 23:03:30 +01:00
parent b8e9790de3
commit b23353e376
2 changed files with 8 additions and 4 deletions

View File

@ -288,13 +288,14 @@ class TopLevelDocumentMetaclass(DocumentMetaclass):
# Check for custom primary key
if field.primary_key:
if not new_class._meta['id_field']:
current_pk = new_class._meta['id_field']
if current_pk and current_pk != field_name:
raise ValueError('Cannot override primary key field')
if not current_pk:
new_class._meta['id_field'] = field_name
# Make 'Document.id' an alias to the real primary key field
new_class.id = field
#new_class._fields['id'] = field
else:
raise ValueError('Cannot override primary key field')
new_class._meta['unique_indexes'] = unique_indexes

View File

@ -344,6 +344,9 @@ class DocumentTest(unittest.TestCase):
class EmailUser(User):
email = StringField(primary_key=True)
self.assertRaises(ValueError, define_invalid_user)
class EmailUser(User):
email = StringField()
user = User(username='test', name='test user')
user.save()