我有一张巨大的桌子需要切成一些较小的桌子,例如: campaign_01,campaign_02,... 在为同一个模型使用不同表名的django queryset时,我只知道在模型上设置表名是: Model._meta.db_table ='tableXXX'
但是,此方法在单个shell /请求中不起作用。 (仅适用于第一次,但不适用于下一次) - >也许是因为它仍然在同一个实例上? 在第二次我们尝试设置_meta.db_table ='tableYYY'之后,会出现错误“django.db.utils.ProgrammingError:缺少表格的FROM子句条目”tableXXX“”
我也尝试了一些建议,我读了这个问题的答案,如:
1108 warn tslint@5.5.0 requires a peer of typescript@>=2.1.0 || >=2.1.0-dev ||
>=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev but none was
installed.
1109 warn tsutils@2.6.1 requires a peer of typescript@>=2.1.0 || >=2.1.0-dev ||
>=2.2.0-dev || >=2.3.0-dev || >= 2.4.0-dev || >= 2.5.0-dev || >= 2.6.0-dev but none
was installed.
1110 verbose stack Error: ENOENT: no such file or directory, stat 'C:\Users\HH
\Documents\ionicproject\file:cordova-common-1.1.1.tgz'
1110 verbose stack at Error (native)
1111 verbose cwd C:\Users\HH\Documents\ionicproject
1112 verbose Windows_NT 6.3.9600
1113 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\HH\\AppData\
\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js" "install" "cordova-common@1.1.1"
1114 verbose node v6.10.2
1115 verbose npm v5.2.0
1116 error path C:\Users\HH\Documents\ionicproject\file:cordova-common-1.1.1.tgz
1117 error code ENOENT
1118 error errno -4058
1119 error syscall stat
1120 error enoent ENOENT: no such file or directory, stat 'C:\Users\HH\Documents
\ionicproject\file:cordova-common-1.1.1.tgz'
1121 error enoent This is related to npm not being able to find a file.
1122 verbose exit [ -4058, true ]
尝试创建一个对象管理器以获取新对象,但它不起作用,它仍然抛出与以前相同的错误(在第二次设置_meta.db_table时)
如果我们想为_meta.db_table设置多次,那么使其工作的唯一方法是我们需要首先退出()shell,然后重新进入shell模式(这意味着for循环不起作用)。
我知道可以使用原始查询'Insert into tableXXX values()'来实现,但是使用django queryset的任何方法都可以实现吗?感谢〜
答案 0 :(得分:0)
考虑创建一个包装器模型。
class Model1(models.Model):
# fields...
name = ...
age = ...
class Model2(models.Model):
# fields...
height = ...
weight = ...
class ModelAll(models.Model):
model1 = models.OneToOneField(Model1)
model2 = models.OneToOneField(Model2)
但是如果你只是为组织做这件事,那就用白色空格打破领域。
这将产生以下表格:
型号1
id | name | age
------------------
1 | "Joe" | 21
模型2
id | height | weight
----------------------
1 | 5.85 | 175
2 | 6.0 | 210
ModelAll
id | model1_id | model2_id
----------------------------
1 | 1 | 2
访问子模型字段:
modelall = ModelAll.objects.get(...)
modelall_name = modelall.model1.name
modelall_height = modelall.model2.height