我有以下型號如何假扮遷移不創建一個特定的現有中介表
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