我是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 V 1.3,Python 2.4,Mysql 5.0.77
请求方法:POST 请求网址:http://somehost:8100/admin/users_admin/group_map/add/ Django版本:1.3 异常类型:DatabaseError 例外值:
(1110,“列'id'指定两次”)
经验教训:如果它是一个新的数据库而不是自己制作表只需运行python manage.py syncdb,那么它将为你创建数据库并且一切都很好。谢谢你的帮助!
答案 0 :(得分:6)
你不能这样做:
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()
答案 1 :(得分:0)
您为db_column='id'
和group_id
指定了user_id
。您不能有两个具有相同名称的列。您可以删除此参数,让Django为您处理命名。
答案 2 :(得分:0)
db_column
指定要在您定义的模型中使用的列名称,而不是引用的列名称。无需为FK指定列名,它是自动完成的。
答案 3 :(得分:0)
group = models.ForeignKey(Groups, db_column='group_id')
user = models.ForeignKey(Users, db_column='user_id')