我有两个模型,每个模型都有一个共享的 ManyToMany,使用 db_table 字段。但是如何防止syncdb 尝试为第二个模型创建共享表呢?
class Model1(models.Model):
othermodels = ManyToManyField('Model2', db_table='model1_model2', related_name='model1_model2')
class Model2(models.model):
othermodels = ManyToManyField('Model1', db_table='model1_model2', related_name='model2_model1')
它在我的开发环境中运行得很好,因为一些表是在我全部构建时零碎创建的。但是从空数据库中,syncdb 会抛出:
_mysql_exceptions.OperationalError:(1050,“表'model1_model2'已经存在”)
第二个模型的字段中是否缺少一个标志以防止重复创建表?或者我只是这样做完全错误?
我还找到了这个解决方案,它对我来说非常有效:
class Test1(models.Model):
tests2 = models.ManyToManyField('Test2', blank=True)
class Test2(models.Model):
tests1 = models.ManyToManyField('Test1', through=Test1.tests2.through, blank=True)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)