Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.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
Python Django模型将短语附加到app_标签_Python_Django_Django Models - Fatal编程技术网

Python Django模型将短语附加到app_标签

Python Django模型将短语附加到app_标签,python,django,django-models,Python,Django,Django Models,我正在进行一些外部集成,以将数据保存到Django模型。整合需要一些时间。所以我想创建一些临时的复制模型。我将数据创建到这些临时模型中。完成该过程后,我将数据传输到实际模型。通过这样做,我不会给系统带来任何停机时间 class MyModelAbstract(models.Model): my_field = models.CharField(max_length=50) ... class Meta: abstract = True class My

我正在进行一些外部集成,以将数据保存到Django模型。整合需要一些时间。所以我想创建一些临时的复制模型。我将数据创建到这些临时模型中。完成该过程后,我将数据传输到实际模型。通过这样做,我不会给系统带来任何停机时间

class MyModelAbstract(models.Model):
    my_field = models.CharField(max_length=50)
    ...

    class Meta:
        abstract = True

class MyModel(MyModelAbstract):
    is_active = models.BooleanField(default=True)

class MyModelTemp(MyModelAbstract):
    pass
如果我的应用程序名为
my\u app
,则表名将变成
my\u app\u mymodel
my\u app\u mymodeltemp
。我想把它命名为
my\u app\u tmp\u mymodeltemp
。我可以通过以下方式实现这一点:

class MyModelTemp(MyModelAbstract):
    class Meta:
        app_label = 'my_app_tmp'
但是我不想静态地编写
app\u标签。如果我更改名称,我不想手动更改
app\u标签
。我想像
app\u label='%s\u tmp'%app\u label
那样指定它,但我无法访问内部元类中当前应用的标签

此外,我可以通过为这种情况创建新的元类来处理这个问题。我正在寻找一种更简单的方法

如果“我的应用程序名称”是“我的应用程序”,则表名称将成为“我的应用程序”mymodel和“我的应用程序”mymodeltemp

评论

app\u标签
用于
型号
已安装的应用程序
之外的情况。现在,您的意图(假设)是需要另一个名为prefix
tmp
的表。为此,您需要
db\u表
。我们可以通过将这个片段放在每个模型下来动态地完成它

from django.db import connection

Model._meta.db_table = Model._meta.db_table+ "_tmp"
with connection.schema_editor() as schema:
    schema.create_model(Model)

这样做是不可能的,因为您需要进行迁移才能更改实际的表名,并且迁移不能是动态的。我不想更改迁移行为。在注册模型之前,我想在创建新类的过程中更改app_标签。因此,它不会影响迁移。需要更好地解释该注释。我想要的是使用来自
app\u config
的原始值更改
app\u标签。我想按模型来做,而不是一个模块中的所有模型。由于app_标签设置为
Meta
类,我无法访问
Meta
类中的原始值。我的app位于
已安装的APPS
中,我通常对表命名感到满意。但是对于一些表,我想区别于其他表,但不会丢失app_标签。我希望
tmp
介于应用程序标签和型号名称之间。这样,在管理产品时,我将按顺序查看它们。我不确定,但在我看来,你的建议可能会破坏我的迁移!?恐怕不会。无论如何,将迁移文件保存在git或版本控制中。