我试图建立一个由两个表组成的关系数据库。 在建立具有多对多关系的数据库时,我没有任何问题。但是问题在我更改主键时就开始了
我需要向数据库输入旧数据。在其中一个列表中,我将有一个客户列表,在另一个实体列表中。客户应与多个实体建立关系。
例如:
Client A:
Entity 1
Entity 2
Entity 3
Client B:
Entity 6
Entity 1
Entity 2
Entity 8
Table of Clients:
Client A (identification number: 6582395)
Client B (identification number: 7866732)
Table of Entities:
Entity 1 (identification number: 6582395)
Entity 1 (identification number: 7866732)
Entity 2 (identification number: 6582395)
Entity 2 (identification number: 7866732)
Entity 3 (identification number: 6582395)
Entity 6 (identification number: 7866732)
Entity 8 (identification number: 7866732)
实体将重用于多个客户端。
诀窍是我有旧数据,其中我只能使用 “识别号:”。 我不知道该怎么做。如果我使用主键,那么我就不能拥有带有重复标识号的实体(这是我创建两个列表之间关系的唯一方法。
class Entities(models.Model):
e_name = models.CharField(max_length=255)
e_country = models.CharField(max_length=255)
e_SAP_id = models.IntegerField(primary_key=False, unique=False)
id = models.AutoField(primary_key=True, unique=True)
class Clients(models.Model):
client_name = models.CharField('Clients full legal name', max_length=255)
SAP_id = models.IntegerField(primary_key=True)
c_country = models.CharField(max_length=255)
creation_date = models.DateTimeField()
c_structure = models.ManyToManyField(Entities, related_name='e_SAP_ids', blank=True)
c_structure_string = models.TextField(default='')
如您所见,我正在尝试将e_SAP_id = models.IntegerField(primary_key = False,unique = False)设置为unique = False,但它不允许我这样做。我无法创建具有相同标识号的多个实体。
请帮助我。我不知道该怎么办...
提前谢谢
答案 0 :(得分:0)
如果要集成现有数据库,则可以:
生成检查旧数据库的模型。
strnpcy(x, a == MACRO1 ? "S" : "K", 2 * (a == MACRO1 + a == MACRO2));
或
"items": [
{
"recipient_type": "EMAIL",
"amount": {
"value": "9.87",
"currency": "USD"
},
"note": "Thanks for your patronage!",
"sender_item_id": "201403140001",
"receiver": "receiver2@example.com"
},
{
"recipient_type": "EMAIL",
"amount": {
"value": "9.85",
"currency": "USD"
},
"note": "Thanks for your patronage!",
"sender_item_id": "201403140001",
"receiver": "receiver@example.com"
}
这是步骤:
答案 1 :(得分:0)
如果要导入数据(而不是连接到旧数据库),则导入脚本可以为其导入的每个实体关系即时创建关系。
我根本不会将e_SAP_id
存储在Entity
上(从Entity
模型中删除该字段,因为那是Client
的ID。只需添加关系:
for old_entity in old_entities:
c = Client.objects.get(SAP_id=old_entity['identification_number'])
e = Entity.objects.get(name=old_entity['name']) # if unique
# or maybe you should create the entity here:
# e = Entity.objects.get_or_create(name=old_entity['name'], defaults={'country': old_entity['country']})
c.entities.add(e)
# note: assumption is "entities" field on Client
class Client(Model):
...
entities = models.ManyToManyField(Entities, related_name='clients', blank=True)