Django和数据库错误“列'id'重复指定”
我刚开始学习Django,遇到了一些问题,当我尝试保存一个映射时。
from django.db import models
# Create your models here.
class Users(models.Model):
user = models.CharField(max_length=45)
password = models.CharField(max_length=125)
env = models.CharField(max_length=10)
class Meta:
db_table = 'esp-users'
def __unicode__(self):
return unicode(self.user)
class Groups(models.Model):
group_name = models.CharField(max_length=45)
description = models.CharField(max_length=255)
env = models.CharField(max_length=45)
class Meta:
db_table = 'esp-groups'
def __unicode__(self):
return unicode(self.group_name)
class Roles(models.Model):
role_name = models.CharField(max_length=45)
env = models.CharField(max_length=10)
class Meta:
db_table = 'esp-roles'
def __unicode__(self):
return unicode(self.role_name)
class Group_Map(models.Model):
group_id = models.ForeignKey(Groups, db_column='id')
user_id = models.ForeignKey(Users, db_column='id')
class Meta:
db_table='esp-group-map'
def __unicode__(self):
return unicode(self.group_id)
class Role_Map(models.Model):
role_id = models.ForeignKey(Roles, db_column='id')
group_id = models.ForeignKey(Groups, db_column='id')
class Meta:
db_table='esp-role-map'
def __unicode__(self):
return unicode(self.role_id)
谢谢大家的帮助。
Django版本:1.3,Python版本:2.4,Mysql版本:5.0.77
请求方式:POST
请求网址:http://somehost:8100/admin/users_admin/group_map/add/
Django版本:1.3
异常类型:数据库错误
异常信息:
(1110, "列'id'被指定了两次")
学到的经验:如果是新数据库,不用自己手动创建表,只需运行 python manage.py syncdb,它会为你自动创建数据库,一切就会正常。谢谢大家的帮助!
4 个回答
0
你为 group_id
和 user_id
都指定了 db_column='id'
。但是你不能有两个名字一样的列。你可以去掉这个参数,让Django自己来处理命名。
1
group = models.ForeignKey(Groups, db_column='group_id')
user = models.ForeignKey(Users, db_column='user_id')
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的方式解释清楚。
7
你不能这样做:
group_id = models.ForeignKey(Groups, db_column='id')
user_id = models.ForeignKey(Users, db_column='id')
你只需要这样做:
group_id = models.ForeignKey(Groups)
user_id = models.ForeignKey(Users)
Django会根据Users
和Groups
的主键来推断使用哪个列。
顺便提一下,我建议你把Groups
改成Group
,把Users
改成User
,这样做会让你的代码更清晰,因为你可以这样写:
user = User()
而不是:
user = Users()