自动中间模型,用于“ id”为BigAutoField的ManyToMany关系

时间:2019-07-16 10:53:24

标签: django django-models django-migrations

对于很多对很多关系,我需要放置很多条目。 因此,我希望中间模型的“ id”字段为BigAutoField

我知道我可以为这些关系指定一个自定义的中间模型,但是我不愿意这样做,因为尽管id字段的类型是我对自动生成的模型感到满意,并且希望避免很多事情代码更改。

因此,有什么方法可以(主要)自动生成带有BigAutoField作为ID的中间模型

我尝试使用迁移来更改id字段,但是似乎自动生成的模型在migrations.AlterField中不可用。


# models.py
from django.db import models


class Model1(models.Model):
    id = models.BigAutoField()
    name = models.CharField(max_length=255)


class Model2(models.Model):
    id = models.BigAutoField()
    model1set = models.ManyToManyField(Model1)

# migrations 0002

class Migration(migrations.Migration):
    # ...

    operations = [
        migrations.AlterField(
            'model2_model1set', 'id', models.BigAutoField()
        ),
    ]


运行迁移可以提供:

KeyError: ('main', 'model2_model1set')

但是,可以通过apps对象使用相同名称访问模型:

>>> from django.apps import apps 
>>> apps.get_model("main", "model2_model1set")
main.models.Model2_model1set

那么,有什么方法可以(自动)将id设置为BigAutoField的中间模型?

0 个答案:

没有答案