gpt4 book ai didi

python - 如何在非默认数据库中创建用户?

转载 作者:行者123 更新时间:2023-12-02 01:16:59 24 4
gpt4 key购买 nike

我正在阅读文档并同步了我的第二个数据库并准备就绪。我找到了关于使用 .using('database') 告诉 django 它应该使用哪个数据库的部分。

基于同样的思路,我试图向 django 展示它应该在创建用户后将其保存在何处:

User.objects.using('user_data').create_user(username=username, password=password, email='')

当我尝试那段代码时,我得到了这个错误:

AttributeError at /signup/

'QuerySet' object has no attribute 'create_user'

所以我很好奇是否有不同的方式告诉 django 我希望它保存在 user_data 而不是默认数据库中?我不想使用路由器,因为我发现它们很困惑。谢谢。

最佳答案

根据 Using managers with multiple databases 的文档,关于错误 'QuerySet' object has no attribute 'create_user' :

For example, say you have a custom manager method that touches the database -- User.objects.create_user(). Because create_user() is a manager method, not a QuerySet method, you can't do User.objects.using('new_users').create_user(). (The create_user() method is only available on User.objects, the manager, not on QuerySet objects derived from the manager.)

强调我的。你需要这样做:

User.objects.db_manager('new_users').create_user(username=username, password=password, email='')

另外,你可以试试这个(没测试过):

new_user = User()
new_user.username = username
new_user.password = password
new_user.email = ''
new_user.save(using='user_data')

有关 Selecting a database for save() 的更多信息在 Django 的文档中。

关于python - 如何在非默认数据库中创建用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10215745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com