【发布时间】:2020-03-21 02:36:17
【问题描述】:
我正在用 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_source.ID_object”的反向访问器与反向冲突 'Has_source.ID_subject' 的访问器。
“Has_definition.ID_object”的反向访问器与反向冲突 'Has_definition.ID_subject' 的访问器。
“Has_other_form.ID_object”的反向访问器与反向冲突 'Has_other_form.ID_subject' 的访问器。
这让我觉得 Django 无法处理同一个实体表是同一个关系表的两个外键的目标的模型。
我说的对吗?如何使用 Django 模型来表示我的关系模式?
【问题讨论】:
标签: django-models foreign-keys