【问题标题】:what wrong with my models.py我的models.py有什么问题
【发布时间】:2012-08-10 09:31:01
【问题描述】:

我正在使用 Django 1.4 和 PostgreSQL 9.1.4

我的 models.py 有什么问题

class UserProfile(models.Model):
    ROLES_TYPE = (
        ('Employee', 'Employee'),
        ('Employor', 'Employor'),
    )
    user = models.OneToOneField(User, related_name='Profile')
    role = models.CharField(max_length=15, choices=ROLES_TYPE)

class Student(models.Model):
    id = models.AutoField(db_column='studentid', primary_key=True)
    username = models.OneToOneField(UserProfile, related_name='Employee')
    first_name = models.CharField(db_column='fname', max_length=100,
                              null=True, blank=True)
    last_name = models.CharField(db_column='lname', max_length=100,
                             null=True, blank=True)

当我运行 ./manage.py syncdb 时,出现错误

Creating tables ...
Creating table Student
Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/jayapaldharmamani/Projects/jayapal/aplink/aplink_env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line
utility.execute()
  File "/home/jayapaldharmamani/Projects/jayapal/aplink/aplink_env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/jayapaldharmamani/Projects/jayapal/aplink/aplink_env/local/lib/python2.7/site-packages/django/core/management/base.py", line 196, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/home/jayapaldharmamani/Projects/jayapal/aplink/aplink_env/local/lib/python2.7/site-packages/django/core/management/base.py", line 232, in execute
    output = self.handle(*args, **options)
  File "/home/jayapaldharmamani/Projects/jayapal/aplink/aplink_env/local/lib/python2.7/site-packages/django/core/management/base.py", line 371, in handle
    return self.handle_noargs(**options)
  File "/home/jayapaldharmamani/Projects/jayapal/aplink/aplink_env/local/lib/python2.7/site-packages/django/core/management/commands/syncdb.py", line 102, in handle_noargs
    cursor.execute(statement)
  File "/home/jayapaldharmamani/Projects/jayapal/aplink/aplink_env/local/lib/python2.7/site-packages/django/db/backends/util.py", line 40, in execute
    return self.cursor.execute(sql, params)
  File "/home/jayapaldharmamani/Projects/jayapal/aplink/aplink_env/local/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 52, in execute
    return self.cursor.execute(query, args)
django.db.utils.DatabaseError: column "id" referenced in foreign key constraint does not exist

删除相关名称和ID字段后的SQL查询

创建表“admin_userprofile”(

 "id" serial NOT NULL PRIMARY KEY,
       "user_id" integer NOT NULL UNIQUE REFERENCES "auth_user" ("id") DEFERRABLE     INITIALLY DEFERRED,
        "role" varchar(15) NOT NULL
    );

创建表“学生”(

       "id" serial NOT NULL PRIMARY KEY,
       "username_id" integer NOT NULL UNIQUE REFERENCES "admin_userprofile" ("id") DEFERRABLE INITIALLY DEFERRED
    );

请帮帮我。

感谢和问候, 贾亚帕尔D

【问题讨论】:

标签: python django django-models django-1.4


【解决方案1】:

这是由您的数据库而不是 django 本身产生的问题。尝试重新创建您的数据库架构(您可以删除所有相关列并执行./manage.py syncdb

【讨论】:

  • 为什么需要不寻常的 db id 名称?
  • 尝试删除此行:id = models.AutoField(db_column='studentid', primary_key=True)。你真的不需要它(django 为每个模型设置自动 pk)
  • 我尝试了所有可能的方法,但同样的错误。我也删除了 ID 字段,相关名称。
  • 你能发布 sql-query django 尝试执行吗?
【解决方案2】:

尝试从Student 模型中的id 列中删除db_column='studentid'

为什么要更改列名?

另外,你为什么不使用自动 ID 呢?

【讨论】:

  • 我都试过了,但同样的错误。如果删除字段用户名,那么它工作正常。
猜你喜欢
  • 2019-05-27
  • 1970-01-01
  • 2015-06-06
  • 2012-09-10
  • 2013-06-29
  • 2016-02-03
  • 2011-06-15
  • 2014-11-04
  • 2011-12-29
相关资源
最近更新 更多