相关疑难解决方法(0)

如何伪造迁移以便不创建特定的现有中间表

我有以下型号

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")
Run Code Online (Sandbox Code Playgroud)

我在两个表上都有相同的M2M,因为我希望在两个管理表单上显示相同的中间表.他们还必须使用相同的表(不创建两个单独的表),因为一个管理表单中的一个更改必须反映到另一个.就像,如果我添加一个新的HareketVucutBolgesiHareketAdmin,然后同样的结果shoudl上看到VucutBolgesiAdmin过.

为了实现这一点,我首先删除hareketlerM2M字段,VucutBolgesi因此Hareketler模型将创建中间表.我这个迁移,然后添加hareketlerVucutBolgesidb_table属性,这样它会识别同一中介表.

该领域的最终外观如下

hareketler = models.ManyToManyField("Hareket", verbose_name="Hareketler", db_table="antrenman_hareket_bolgeler",
                                    null=True, blank=True, help_text="Bölgeyi çal??t?ran hareketler")
Run Code Online (Sandbox Code Playgroud)

当我尝试迁移它时,django会抛出异常

django.db.utils.OperationalError: table "antrenman_hareket_bolgeler" already exists
Run Code Online (Sandbox Code Playgroud)

我应该如何伪造这种迁移?

以下是每次运行时django创建的迁移 …

django django-1.7 django-migrations

5
推荐指数
1
解决办法
8494
查看次数

标签 统计

django ×1

django-1.7 ×1

django-migrations ×1