我有以下表格旧的数据库:
人
person_id (PK) | first_name | last_name
1 | John | Doe
2 | David | Bentley
电话号码
person_id (FK,PK) | phone_number (PK) | area_code (PK)
1 | 758-4551 | 909
1 | 763-3445 | 909
2 | 634-0011 | 637
每个人都可以拥有零个或多个电话号码,这是人实体的多值属性。
我一直在使用这生成以下models.py的Django的inspectdb命令尝试:
class Person(models.Model):
person_id = models.BigIntegerField(primary_key=True)
first_name = models.CharField(max_length=255)
last_name = models.CharField(max_length=255)
class Meta:
managed = False
db_table = 'person'
class PhoneNumbers(models.Model):
person = models.ForeignKey(Person, models.DO_NOTHING)
phone_number = models.CharField(max_length=15)
area_code = models.CharField(max_length=15)
class Meta:
managed = False
db_table = 'phonenumbers'
unique_together = (('person', 'phone_number', 'area_code'),)
然而,当我试图挽救PHONENUMBERS的新实例,Django会返回以下错误信息:
django.db.utils.ProgrammingError: column phonenumbers.id does not exist
显然,Django的预计的电话号码的表有一个代理键。 由于电话号码的表是不是一个实体,它并没有在我的旧的数据库代理键。 注意,PHONENUMBERS'表主键是它的所有列的组合物。
我怎样才能在这些表到Django的模型映射,使之与我的遗产数据库中运行?