我有一个新模特:
class User(StructuredNode):
id = UniqueIdProperty()
username = StringProperty(unique_index=True)
email = StringProperty(unique_index=True)
password = StringProperty()
def save(self, *args, **kwargs):
self.password = make_password(self.password)
return super(User, self).save(*args, **kwargs)
当我在控制台中保存该模型的新实例时,我成功获取了一个新的User实例,但是当我从模型中检索所有 User 对象时,我得到了一个空结果集:
(AttractoraVenv) MacBook-Pro-de-Hugo:AttractoraBackend hugovillalobos$ python manage.py shell
Python 3.7.1 (default, Dec 14 2018, 13:28:58)
[Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from users.models import User
>>> user = User(username='admin', email='admin@admin.com', password='secret').save()
>>> user
<User: {'id': '0d3b0aa56499414d8fb205ea1279662e', 'username': 'admin', 'email': 'admin@admin.com', 'password': 'pbkdf2_sha2
56$150000$vTdAnqAvXnOM$0hPMc1KiMpLvHbVO4C77OXUa9dmKzt9lMxIg8Ig+za8='}>
>>> User.nodes.all()
[]
我不知道自己在想什么。
编辑
我发现,当我从 neo4j 控制台使用cypher创建用户实例时,User.nodes.all()
返回了该实例。所以我想问题出在User.save()
上。我还发现User.save()
在更新时效果很好,所以问题出在创建上。
答案 0 :(得分:0)
我不确定改写save
方法是否是个好方法。
请改用此方法(完全删除save
方法):
class User(StructuredNode):
id = UniqueIdProperty()
username = StringProperty(unique_index=True)
email = StringProperty(unique_index=True)
password = StringProperty()
def pre_save(self):
self.password = make_password(self.password)
答案 1 :(得分:0)
id
是一个内置属性,覆盖它不是一个好主意。您可以将id = UniqueIdProperty()
替换为userid = UniqueIdProperty()
之类的东西,这样可以解决该问题。