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
|
# Check for custom primary key
|
||||||
if field.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
|
new_class._meta['id_field'] = field_name
|
||||||
# Make 'Document.id' an alias to the real primary key field
|
# Make 'Document.id' an alias to the real primary key field
|
||||||
new_class.id = 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
|
new_class._meta['unique_indexes'] = unique_indexes
|
||||||
|
|
||||||
|
@ -344,6 +344,9 @@ class DocumentTest(unittest.TestCase):
|
|||||||
class EmailUser(User):
|
class EmailUser(User):
|
||||||
email = StringField(primary_key=True)
|
email = StringField(primary_key=True)
|
||||||
self.assertRaises(ValueError, define_invalid_user)
|
self.assertRaises(ValueError, define_invalid_user)
|
||||||
|
|
||||||
|
class EmailUser(User):
|
||||||
|
email = StringField()
|
||||||
|
|
||||||
user = User(username='test', name='test user')
|
user = User(username='test', name='test user')
|
||||||
user.save()
|
user.save()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user