我有以下型号如何假扮迁移不创建一个特定的现有中介表
class VucutBolgesi(models.Model):
site = models.ForeignKey(Site)
bolge = models.CharField(verbose_name="Bölge", max_length=75)
hareketler = models.ManyToManyField("Hareket", verbose_name="Hareketler", null=True, blank=True, help_text="Bölgeyi çalıştıran hareketler")
class Hareket(models.Model):
site = models.ForeignKey(Site)
hareket = models.CharField(verbose_name="Hareket", max_length=75)
bolgeler = models.ManyToManyField(VucutBolgesi, verbose_name="Çalıştırdığı Bölgeler", null=True, blank=True,
help_text="Hareketin çalıştırdığı bölgeler")
都在我的表在同一M2M,因为我希望在这两个管理形式显示相同的中间表。他们还必须使用同一个表(不创建两个单独的表),因为一个管理员表单中的更改必须反映到另一个表单中。喜欢,如果我添加一个新的Hareket
到VucutBolgesi
到HareketAdmin
然后在VucutBolgesiAdmin
也可以看到相同的结果。
为了达到这个目的,我首先从VucutBolgesi
中删除hareketler
M2M字段,所以Hareketler
模型会创建中间表。我迁移这个,然后hareketler
到VucutBolgesi
与db_table
属性,所以它会识别相同的中间表。
领域的最终外观是folows
hareketler = models.ManyToManyField("Hareket", verbose_name="Hareketler", db_table="antrenman_hareket_bolgeler",
null=True, blank=True, help_text="Bölgeyi çalıştıran hareketler")
当我尝试迁移这个问题,Django抛出以下异常
django.db.utils.OperationalError: table "antrenman_hareket_bolgeler" already exists
我应该怎样假此迁移吗?
以下是迁移的Django创建的每个时间我跑makemigrations
dependencies = [
('antrenman', '0005_vucutbolgesi_hareketler'),
]
operations = [
migrations.AddField(
model_name='vucutbolgesi',
name='hareketler',
field=models.ManyToManyField(to='antrenman.Hareket', db_table=b'antrenman_hareket_bolgeler', blank=True, help_text=b'B\xc3\xb6lgeyi \xc3\xa7al\xc4\xb1\xc5\x9ft\xc4\xb1ran hareketler', null=True, verbose_name=b'Hareketler'),
preserve_default=True,
),
]
注:编辑相关的迁移文件和FO自Django的创建相同migrations.AddField
每个makemigrations
这是一个生命的救星! – TAH 2017-03-17 15:29:29