在 Django 视图中向 Postgres 添加用户/帐户表

2024-01-10

前往编辑2

在views.py中调用以下adduser函数。我首先保存用户,因为它的 id(由 Django 在 INSERT 时自动创建)是帐户和密码的主/外键。添加用户似乎工作正常,但是当它到达时Accounts(user=u),抛出以下错误:

IntegrityError at /adduser
insert or update on table "OmniCloud_App_accounts" violates foreign key constraint "user_id_refs_id_468fbcec324e93d2"
DETAIL:  Key (user_id)=(4) is not present in table "OmniCloud_App_user".

但密钥应该在那里,因为它只是将用户保存到数据库中......

def adduser(request):
    username = request.POST['username']
    password = request.POST['password']
    u = User.objects.create_user(username, request.POST['email'], password)
    u.save()
    a = Accounts(user=u)
    p = Passwords(user=u)
    a.save()
    p.save()
    user = authenticate(username=username, password=password)
    if user is not None and user.is_active:
        auth.login(request, user)
        return HttpResponseRedirect("/%s/" %u.id)
    else:
        return HttpResponseRedirect("/account/invalid/")

编辑:这是帐户初始化的开始:

from django.db import models
from django.contrib.auth.models import User
class Accounts(models.Model):   
    user = models.ForeignKey(User)

EDIT 2


我的钱花在拼写错误的名字上。我在错误消息中注意到您有

OmniCloud_App_accounts
OmniCloud_App_user

第二个表使用单数。没有第二个这样的表是偶然的:

OmniCloud_App_users

此外,在 PostgreSQL 中使用混合大小写标识符在 SO 上也是一个很好的声誉来源。它迟早会咬你。这种愚蠢行为的受害者是这里的常客。任何具有此名称的表都可能 - 并且您忘记了双引号"OmniCloud_App_user"某处?

omnicloud_app_user

要么是这样,要么是保存用户的事务尚未提交。您是否可以只创建用户(还没有帐户)并检查它是否最终位于表中的正确数据库中并具有正确的 ID?

编辑:诊断问题的工具

If you know正在创建用户,那么问题是:外键是否 约束user_id_refs_id_468fbcec324e93d2看看找对地方了吗?同一个数据库?相同的架构?同一张桌子?

要找出数据库中存在哪些表,请尝试以下查询(如果您有必要的权限):

SELECT n.nspname AS schema_name
      ,c.relname AS table_name
      ,c.relhastriggers
      ,c.reltuples
FROM   pg_catalog.pg_class c
LEFT   JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE  c.relname ~~* '%user%'
AND    c.relkind = 'r'
AND    nspname <> 'pg_catalog';

显示名称中包含“user”的所有模式中的所有表,不区分大小写。另外,如果表有触发器(could导致你的问题)以及其中有多少行(估计由ANALYZE)。可能会给你一个线索...

您还可以使用元命令\d标准命令行客户端(交互式终端)psql http://www.postgresql.org/docs/current/static/app-psql.html.

我将运行一个测试用例并让 postgres 服务器记录它得到的所有内容。为此目的设置此参数:

set log_statement = 'all';

手册关于日志记录参数 http://www.postgresql.org/docs/current/interactive/runtime-config-logging.html.

log_statement(枚举)

控制记录哪些 SQL 语句。有效值为 none(关闭)、ddl、mod 和 all(所有语句)。

手册上如何设置参数 http://www.postgresql.org/docs/current/interactive/config-setting.html.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Django 视图中向 Postgres 添加用户/帐户表 的相关文章

随机推荐

  • 将非连续列数据合并为单列

    我想将值从列 B C D 复制到列 J 同时保持值的行位置 我想将值从 E F G 列复制到 K 列 同时保持行位置 Desired results in Cols J K The colors are only to clarify my
  • AngularJS - 依赖下拉列表:在模型中存储一个值,使用其他值作为下一个下拉列表的源

    我有两个依赖的下拉菜单 一个显示国家 另一个显示国家 我希望第一个只保存国家 地区 ID 但使用整个对象作为源 对于第二个下拉列表 这是我到目前为止所拥有的 同一屏幕中可能有许多这样的下拉菜单 因此这可能会使事情变得复杂 因为我需要复制临时
  • 如何以编程方式从 win7 中的“屏幕分辨率”对话框获取显示器编号?

    当您按 屏幕分辨率 对话框中的 识别 按钮时 Windows 会在每个显示器上显示大的白色显示器编号 在 Windows XP 中 使用 EnumDisplayDevices 很容易以编程方式与显示器坐标一起找到它们 但在 Windows
  • 通过php提取excel中动态变化的数据

    我有一个打开的 Excel 工作表 另一个程序通过 DDE 不断更新该工作表 我希望有一个 php 脚本来访问此 Excel 工作表中的一些数据 我尝试过使用 PHPExcel 但似乎我无法让我所做的更改 例如通过 setCellValue
  • Grails:映射同一类型的字段和belongsTo的列名

    我正在尝试映射此类的列名称 class Amount String total Total amount of something String type Type of amount Dollars Times something Bon
  • 使用 jq/yq 进行遍历

    我有一个类似于下面的数据文件 user01 name User01 Name age 20 sex male state CA zip 92012 user02 name User02 Name age 22 sex female user
  • Gitlab 与 SonarQube 集成

    我对开发社区 特别是 DevOps 实践还很陌生 作为项目的一部分 我们正在尝试将 SonarQube 与 Gitlab 集成 在 SonarQube 和 Git CI 持续集成 上进行了一些研发 看起来插件已为 Github 和 Sona
  • apache http 基于 ip 重写/重定向

    我想将一个ip重定向到我网站的另一个视图 例如 我希望来自ip x的访问者看到www xxx com DEBUG 1当所有其他访问者看到正常的 www xxx com 时 我该如何在 apache 配置文件中执行此操作 使用哪些指令 下面是
  • 通过 NSUserDefaults 设置 ios UserAgent:工作一半的时间?

    这真让我抓狂 我有两个只是 UIWebView 的应用程序 使用 XCode 4 5 2 和 iOS 6 0 SDK 我想更改网络调用的 UserAgent 我在以下两个地方都使用了这段代码 NSString secretagent MyU
  • Eclipse CDT:禁用红色下划线

    我使用 eclipse cdt 并且包含了一些文件 不幸的是 我无法将包含路径添加到我的 Eclipse 项目中 因为这样当 Eclipse 开始对新添加的包含进行索引时 它总是会崩溃 因此我想关闭突出显示错误的功能 我可以在哪里执行此操作
  • 选择字段中的 Django 空标签 - 没有查询集

    在选择字段上设置空标签给我带来了一些问题 我看过类似的答案this https stackoverflow com questions 14541074 empty label choicefield django 但这只是谈论形式 假设我
  • Swift Core 数据与 Web 服务器同步

    我正在制作一个应用程序 在 Swift 中 需要在离线和在线模式下运行 当处于离线模式时 数据将存储在本地 CoreData 上 一旦检测到网络 在线 它应该与服务器同步并更新后端数据库 应该怎样做呢 有库或 Pod 吗 我见过这个帖子 h
  • 批量从文件中读取多行

    我想知道是否有一种方法可以从文件中批量读取多行 例如 with open filename rb as f for n lines in f process n lines 在这个函数中 我想做的是 对于每次迭代 将从文件中批量读取接下来的
  • UITableViewAutomaticDimension 无法按预期工作。迅速

    读完雷 文德利希之后guide https www raywenderlich com 1067 self sizing table view cells对于 自动调整表格视图单元格大小 以及这个问题 https stackoverflow
  • 设置 pygame 混合器的输出设备

    我需要使用 pygame 通过不同的音频设备播放音频文件 显然这可以通过参数来实现devicename在方法中pygame mixer init https www pygame org docs ref mixer html pygame
  • 如果其他变量为 NA,则设置新变量 NA

    我想向我的数据框添加一个新变量 N notNAs 它定义其他变量是否为 NA x y z N notNAs 2 3 NA NA NA 1 3 NA 2 3 5 1 4 4 3 1 不确定为什么这是您想要的输出 但实现此目的的一种可能方法是将
  • Apache Web 服务器不允许我刷新 /about 但在 localhost 上工作正常

    我捆绑了我的一个项目 效果很好 但是 当在路由 about 上点击刷新时 它会显示请求的 URL about 在此服务器上未找到 但是 当我在 Web 服务器上的本地主机上执行此操作时 它在刷新和前进 后退按钮上工作正常 我正在使用 Rea
  • 即使服务器收到成功消息,也无法在我的设备中接收 GCM 消息

    我从 gcm 收到了作为对 Web 服务器 本地主机 的响应的成功消息 但设备未收到该消息 请帮忙 下面是我使用的代码 主要活动 package vitpat placement import java io IOException imp
  • SWT:获取系统设备更改的通知(USB 设备连接/断开)

    我正在编写一个 SWT 应用程序 该应用程序需要位于系统托盘中 并在用户连接某些 USB 设备时自动弹出 该应用程序用作其控制面板 在本机环境 在本例中为 win32 但我最终应该与平台无关 中执行此操作的方法是侦听 WM DEVICECH
  • 在 Django 视图中向 Postgres 添加用户/帐户表

    前往编辑2 在views py中调用以下adduser函数 我首先保存用户 因为它的 id 由 Django 在 INSERT 时自动创建 是帐户和密码的主 外键 添加用户似乎工作正常 但是当它到达时Accounts user u 抛出以下