Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django models 如何在一个实体表和多个关系表的关系数据库中设置forign键?(django)_Django Models_Foreign Keys - Fatal编程技术网

Django models 如何在一个实体表和多个关系表的关系数据库中设置forign键?(django)

Django models 如何在一个实体表和多个关系表的关系数据库中设置forign键?(django),django-models,foreign-keys,Django Models,Foreign Keys,我正在Django开发一个应用程序 我的应用程序从excel表格中输入一些信息,通过数据框架对它们进行详细阐述,然后生成我想要构建的关系模型的表(数据框架)。这些数据帧中的数据随后保存在django模型中 但是,我不知道如何编写Django模型来正确设置外键 在我设计的关系模型中,只有一个实体表和多个关系表 以下是我想表达的观点: 以下是我用脚本(数据帧)准备的表: (如果我在Microsoft Access中复制粘贴这些表并通过查询链接它们,它将返回所需的结果–我尝试过) 以下是我准

我正在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)