【发布时间】:2021-06-11 02:18:01
【问题描述】:
我有一个名为 Occurrence 的模型,它有许多外键和多对多关系(我在这里只展示了几个字段)。在我使用 sqlalchemy 引擎将批量数据加载到我的 postgres (postgis) 数据库后,尝试创建与 Occurrence 实例的任何多对多关系时遇到问题。在上传数据之前,我可以像往常一样建立关系:
Occurrence.objects.get(ind='1010106').minmat.add(Material.objects.get(code='Li'))
然后我检查关系是否成功:
Occurrence.objects.get(ind='1010106').minmat.all()
它返回所有关系的查询集。 我已经删除了数据库,并且在重新迁移后一切正常,但是一旦我重新加载了由多达 150,000 行的表组成的数据,我就无法再创建这些关系。没有错误发生,但是运行 add() 后模型实例没有疯狂添加。
这是模型:
class Occurrence(models.Model):
ind = models.CharField(max_length=14, blank=False, null=False, primary_key=True)
minmat = models.ManyToManyField(Material, related_name="minmat_occurrence", blank=True,)
geom = models.PointField(srid=4202)
def __str__(self):
return self.ind
class Material(models.Model):
code = models.CharField(max_length=6, primary_key=True)
name = models.CharField(max_length=50, blank=False, null=False)
category = models.ManyToManyField(MaterialCategory, related_name="category_material", blank=True)
def natural_key(self):
return self.name
在加载数据之前一切正常,所以我认为问题在于在 django 之外加载数据,但 django 的所有其他方面都照常工作。
我已经在这个问题上停留了一段时间,所以任何帮助都将不胜感激
【问题讨论】:
-
你能告诉我们什么是 minmat,我在你分享的模型上看不到吗?
-
抱歉,刚刚修复了模型。 @Monata
标签: sql django pandas postgresql geodjango