Django ManyToManyField无法创建“通过”表

时间:2013-03-28 23:44:22

标签: mysql django manytomanyfield syncdb

我的电子商务网站有一个models.py,它定义了3个模型。最初,它只定义了两个ProductCategory,但我意识到我需要能够使用某些关键字标记我的产品,因此我添加了该模型。当我尝试syncdb并创建了新的tag表而不是products_tags'到'表时出现了问题。

class Category(models.Model):
    **a bunch of variables**

    class Meta:
        db_table = 'categories'
        ordering = ['name']
        verbose_name_plural = 'Categories'

    def __unicode__(self):
        return self.name

    @models.permalink
    def get_absolute_url(self):
        return ('catalog_category', (), { 'category_slug': self.slug })

class Tag(models.Model):
    **a bunch of variables**

    class Meta:
        db_table = 'tags'
        ordering = ['name']
        verbose_name_plural = 'Tags'

    def __unicode__(self):
        return self.name

class Product(models.Model):
    **a bunch of variables**
    categories = models.ManyToManyField(Category, related_name='cat+')
    tags = models.ManyToManyField(Tag, related_name='tag+')

    class Meta:
        db_table = 'products'
        ordering = ['-created_at']

    def __unicode__(self):
        return self.name

这一切都得到了很好的验证,当我运行python manage.py syncdb时,所有表都是使用适当的行和类型以及您期望的其他所有内容创建的。但是,由于products_tags类中建立了ManyToMany关系,因此它不会创建您希望它创建的Product表。为什么它成功创建products_categories'到'表而不是products_tags表?

1 个答案:

答案 0 :(得分:1)

正如Aamir在评论中所说,syncdb没有迁移功能,这就是为什么没有创建新的直通表。我安装了django南部,现在更新表正如预期的那样。