【发布时间】:2014-10-31 17:55:25
【问题描述】:
我对 Django 还很陌生,我正在尝试使用 django 的钩子将一些“主机”数据添加到“记录”以使用 SQL 进行初始化(应用文件夹和 sql 子文件夹中的小写 SQL 文件)
这是模型:
class Record(models.Model):
species = models.TextField(max_length = 80)
data=models.TextField(max_length = 700)
hosts = models.ManyToManyField('Host')
class Host(models.Model):
hostname = models.TextField()
我使用了 ManyToManyField,因为每条记录应该能够有多个主机,并且主机应该是“可重复使用的”:即能够出现在许多记录中。
当我尝试通过 SQL 插入时,我有
INSERT INTO myapp_record VALUES ('Species name', 'data1', XYZ);
如果我想要主机 1、2 和 3,我不确定要为 XYZ(ManytoMany)添加什么
用逗号分隔它们显然不起作用,我尝试了一个元组,但也没有。 我应该尝试插入 Django 制作的中间表吗?这和我正在使用的钩子有类似的钩子吗?如果没有,如何在该表上执行 SQL 插入?
【问题讨论】:
-
如果我这样做,Record 的初始化会(正确地)抱怨缺少一个值(主机字段)。我想我可以首先允许 hosts 字段为空,然后将其添加到中介,但我的印象是 Django 处理的重点是我不应该这样做。那时我还有几百行要手动执行,所以如果有任何方法可以在插入记录的同时做到这一点,这是我更喜欢的,如果需要,我当然会做我必须做的。