我有两个模型,每个模型都有一个共享的manytomyne,使用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.operational错误:(1050,“表'model1_model2'已存在”)
在第二个模型的字段中是否缺少防止创建重复表的标志?还是我做的完全错了?
我还找到了这个解决方案,对我来说非常有效:
你不需要在关系的两边加上
ManyToManyField
。Django will do that for you。你可能想要这样的东西:
使用模型时,
Model1
的实例将有一个由django自动添加的othermodels_set
字段。Model2
的实例将具有othermodels
。http://docs.djangoproject.com/en/dev/topics/db/models/#abstract-base-classes
这不是你要找的,但这是他们最接近的。做一个视图难道不简单吗?
也许:
然后,可以创建一个表并重写
__getattr__
以阻止对原始字段的访问。相关问题 更多 >
编程相关推荐