Python 无法删除Django中的用户对象
我的Django视图函数中有一个try-except块,如果任何操作失败,它将删除在try块中创建的用户对象。当我尝试删除该用户时,会收到此错误消息Python 无法删除Django中的用户对象,python,django,exception,Python,Django,Exception,我的Django视图函数中有一个try-except块,如果任何操作失败,它将删除在try块中创建的用户对象。当我尝试删除该用户时,会收到此错误消息 OperationalError: no such table: reversion_revision 同样的问题也发生在Django管理员中。我在发现类似的错误发生在其他人身上时遇到了问题,我不知道为什么会发生这种情况。我在块中删除的所有其他对象都将删除,但不会出现任何问题 @csrf_exempt def signup(request):
OperationalError: no such table: reversion_revision
同样的问题也发生在Django管理员中。我在发现类似的错误发生在其他人身上时遇到了问题,我不知道为什么会发生这种情况。我在块中删除的所有其他对象都将删除,但不会出现任何问题
@csrf_exempt
def signup(request):
# """Register a new account with a new org."""
if request.is_ajax():
if request.method == "POST":
form = SignUp(requestPost(request))
if form.is_valid():
cleaned_data = form.cleaned_data
email = cleaned_data['email']
password = cleaned_data['password']
org_name = cleaned_data['org_name']
org_username = cleaned_data['org_username']
if cleaned_data['token']:
invite_token = cleaned_data['token']
else:
invite_token = cleaned_data['invite']
try:
account = Account.objects.create(email=email, password=password)
x = email[:30]
userExists = User.objects.filter(username=email[:30])
if not userExists:
if len(email) < 30:
user = User.objects.create_user(email, email, password)
else:
email = email[:30]
user = User.objects.create_user(email, email, password)
if invite_token:
if ThreadInvite.objects.filter(token=invite_token):
invitation = ThreadInvite.objects.get(token=invite_token)
thread = Thread.objects.get(id=invitation.thread.id)
ThreadMember.objects.create(thread=thread, account=account)
else:
invitation = OrgInvite.objects.get(token=invite_token)
if invitation.used:
raise Exception("invitation code is invalid")
org = Org.objects.get(id=invitation.org.id)
OrgMember.objects.create(org=org, account=account)
invitation.used = False
invitation.save()
add_to_welcome(org_id=org.id, account_id=account.id)
if org_username and org_name:
org = Org.objects.create(name=org_name, username=org_username,
actor=account)
OrgMember.objects.create(account=account, org=org)
Thread.objects.create(name='welcome', account=account, owner=account, org=org,
purpose='To welcome new members to the team.')
add_to_welcome(org_id=org.id, account_id=account.id)
login(request)
md = mandrill.Mandrill(settings.MANDRILL_API_KEY)
t = invite_token.replace(' ', '+')
url = "https://localhost:8000/verify/{}".format(t)
message = {
'global_merge_vars': [
{
'name': 'VERIFICATION_URL',
'content': url
},
],
'to': [
{
'email': 'tim@millcreeksoftware.biz',
},
],
'subject': 'Welcome to Human Link',
}
message['from_name'] = message.get('from_name', 'Humanlink')
message['from_email'] = message.get('from_email',
'support@humanlink.co')
try:
md.messages.send_template(
template_name='humanlink-welcome', message=message,
template_content=[], async=True)
except mandrill.Error as e:
logging.exception(e)
raise Exception(e)
context = {
'message': 'ok'
}
return composeJsonResponse(200, "", context)
except Exception, e:
logging.error(e)
Account.objects.filter(email=email, password=password).delete()
User.objects.filter(username=email[:30]).delete()
Org.objects.filter(name=org_name, username=org_username).delete()
这里的问题不在代码中,而在数据库状态中。看起来您添加了<代码>django reversion应用程序。这将在项目中添加新模型。跑
python manage.py syncdb
或者如果你在1.8+
python manage.py migrate
更新
如果这没有帮助,那么您需要首先使用第三方应用程序创建迁移
python manage.py makemigrations name_3rd_party_app
在第三方应用程序上创建迁移时要小心。当您运行makemigrations
时,它会在第三方应用程序包中创建迁移。所以它不会出现在你的代码中。在您部署它或其他用户使用它之后,将不会有此迁移。因此,您需要使用
然后运行migrate
尝试运行
/manage.py makemigrations修订版
然后
/manage.py迁移
或者删除数据库文件,然后重新开始
/manage.py migrate
Hmmm我运行了migrate,它说所有内容都是最新的“没有要应用的迁移”。python manage.py makemigrations reversion是否创建了任何内容?您使用的是什么版本的django和django reversion?为reversion应用程序进行迁移,而不是进行迁移。我不知道为什么在没有指定应用程序的情况下执行“python manage.py makemigrations”就不能实现应用程序范围内的迁移,但这是可行的。谢谢@蒂莫西约瑟夫班尼阅读更新。可能有一些您需要知道的问题。嗯,那么在MIGRATON_模块字典中的我的设置文件中,我会把{'reversion':'reversion.db_migrations'}放进去吗?除了您要问的实际问题之外,我是否可以建议您使用来扭曲您的函数?它的目的是准确地处理您的情况,在发生错误时回滚更改。
python manage.py makemigrations name_3rd_party_app