Django models 如何在一个实体表和多个关系表的关系数据库中设置forign键?(django)
我正在Django开发一个应用程序 我的应用程序从excel表格中输入一些信息,通过数据框架对它们进行详细阐述,然后生成我想要构建的关系模型的表(数据框架)。这些数据帧中的数据随后保存在django模型中 但是,我不知道如何编写Django模型来正确设置外键 在我设计的关系模型中,只有一个实体表和多个关系表 以下是我想表达的观点: 以下是我用脚本(数据帧)准备的表: (如果我在Microsoft Access中复制粘贴这些表并通过查询链接它们,它将返回所需的结果–我尝试过) 以下是我准备的模型:Django models 如何在一个实体表和多个关系表的关系数据库中设置forign键?(django),django-models,foreign-keys,Django Models,Foreign Keys,我正在Django开发一个应用程序 我的应用程序从excel表格中输入一些信息,通过数据框架对它们进行详细阐述,然后生成我想要构建的关系模型的表(数据框架)。这些数据帧中的数据随后保存在django模型中 但是,我不知道如何编写Django模型来正确设置外键 在我设计的关系模型中,只有一个实体表和多个关系表 以下是我想表达的观点: 以下是我用脚本(数据帧)准备的表: (如果我在Microsoft Access中复制粘贴这些表并通过查询链接它们,它将返回所需的结果–我尝试过) 以下是我准
class Things(models.Model):
ID = models.CharField(max_length=25, primary_key=True)
Thing = models.TextField(blank=True, null=True)
class Has_other_form(models.Model):
ID_soggetto = models.CharField(max_length=25)
ID_oggetto = models.CharField(max_length=25)
class Has_definition (models.Model):
ID_soggetto = models.CharField(max_length=25)
ID_oggetto = models.CharField(max_length=25)
class Has_source (models.Model):
ID_soggetto = models.CharField(max_length=25)
ID_oggetto = models.CharField(max_length=25)
但是,我不知道哪些字段设置为ForeignKey,以及如何设置参数
我试过:
class Things(models.Model):
ID = models.CharField(max_length=25, primary_key=True)
Thing = models.TextField(blank=True, null=True)
class Has_other_form(models.Model):
ID_soggetto = models.ForeignKey('Things', on_delete=models.SET_NULL)
ID_oggetto = models.ForeignKey('Things', on_delete=models.SET_NULL)
class Has_definition (models.Model):
ID_soggetto = models.ForeignKey('Things', on_delete=models.SET_NULL)
ID_oggetto = models.ForeignKey('Things', on_delete=models.SET_NULL)
class Has_source (models.Model):
ID_soggetto = models.ForeignKey('Things', on_delete=models.SET_NULL)
ID_oggetto = models.ForeignKey('Things', on_delete=models.SET_NULL)
但它会返回以下错误:
“Has\u source.ID\u object”的反向访问器与反向访问器冲突
“Has\u source.ID\u subject”的访问器
“Has_definition.ID_object”的反向访问器与反向冲突
“Has_definition.ID_subject”的访问器
“Has_other_form.ID_object”的反向访问器与反向冲突
“Has\u other\u form.ID\u subject”的访问者
这使我认为Django无法处理同一实体表是同一关系表的两个外键的目标的模型
我说得对吗?我如何使用Django模型来表示我的关系模式?我想我解决了这个问题,通过改变模型,使之:
class Things(models.Model):
ID_subject = models.ForeignKey('Things', related_name='%(class)s_as_subject', on_delete=models.CASCADE)
ID_object = models.ForeignKey('Things', related_name='%(class)s_as_object', on_delete=models.CASCADE)
class Has_other_form(models.Model):
ID_subject = models.ForeignKey('Things', related_name='%(class)s_as_subject', on_delete=models.CASCADE)
ID_object = models.ForeignKey('Things', related_name='%(class)s_as_object', on_delete=models.CASCADE)
class Has_definition (models.Model):
ID_subject = models.ForeignKey('Things', related_name='%(class)s_as_subject', on_delete=models.CASCADE)
ID_object = models.ForeignKey('Things', related_name='%(class)s_as_object', on_delete=models.CASCADE)
class Has_source (models.Model):
ID_subject = models.ForeignKey('Things', related_name='%(class)s_as_subject', on_delete=models.CASCADE)
ID_object = models.ForeignKey('Things', related_name='%(class)s_as_object', on_delete=models.CASCADE)