我有两个模型,每个都有一个共享的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',related_name='model2_model1')
它在我的开发环境中工作得很好,因为有些表格是零碎地创建出来的,因为我将其全部构建出来.但是从一个空数据库,syncdb throws:
_MysqL_exceptions.OperationalError :((1050,“Table”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)