对于很多对很多关系,我需要放置很多条目。
因此,我希望中间模型的“ 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
的中间模型?