Fixed inherited document primary key issue
This commit is contained in:
parent
b8e9790de3
commit
b23353e376
@ -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
|
||||
|
||||
|
@ -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()
|
||||
|
Loading…
x
Reference in New Issue
Block a user