请帮助我用ForeignKeys编写模型。
表1:
| ports | CREATE TABLE `ports` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`device_id` int(11) DEFAULT NULL,
`name` int(10) DEFAULT NULL,
`login` varchar(255) DEFAULT NULL,
`state` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `device_id` (`device_id`),
KEY `name` (`name`),
KEY `state` (`state`),
KEY `login` (`login`),
CONSTRAINT `ports_ibfk_1` FOREIGN KEY (`device_id`) REFERENCES
`switch` (`id`) ON DELETE CASCADE
)
表1的模型
class Ports(models.Model):
device_id = models.ForeignKey('Switch', models.DO_NOTHING, blank=True, null=True)
name = models.IntegerField(blank=True, null=True)
login = models.CharField(max_length=255, blank=True, null=True)
state = models.IntegerField(blank=True, null=True)
class Meta:
managed = False
db_table = 'ports'
表2:
| switch | CREATE TABLE `switch` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL DEFAULT '',
`addr` varchar(255) NOT NULL DEFAULT '',
`community` varchar(255) NOT NULL DEFAULT '',
`type` int(11) DEFAULT NULL,
`ports` int(11) DEFAULT NULL,
`street_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `type` (`type`),
CONSTRAINT `switch_ibfk_1` FOREIGN KEY (`type`) REFERENCES `switch_types` (`id`)
)
表2的模型
class Switch(models.Model):
name = models.CharField(max_length=255)
addr = models.CharField(max_length=255)
community = models.CharField(max_length=255)
type = models.ForeignKey('SwitchTypes', models.DO_NOTHING, db_column='type', blank=True, null=True)
ports = models.IntegerField(blank=True, null=True)
street_id = models.IntegerField(blank=True, null=True)
class Meta:
managed = False
db_table = 'switch'
运行服务器时出现错误:
错误:
api.Ports.device_id :(字段E303)“ Ports.device_id”的反向查询名称与字段名称“ Switch.ports”冲突。 提示:重命名字段“ Switch.ports”,或在字段“ Ports.device_id”的定义中添加/更改related_name参数。
我无法在MySQL的Switch表中重命名ports列。只读。 我应该设置device_id字段的哪个related_name?如果我添加related_name ='+',所有的操作都不会出错,但是'+'会禁用映射。 还是我需要做其他事情?