Django ManyToManyField创建"through"失败表格



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

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时,所有的表都创建了适当的行和类型以及您所期望的其他一切。但是,由于在Product类中建立了manymany关系,因此它不会创建您期望它创建的products_tags表。为什么它成功地创建了products_categories 'through'表,而不是products_tags表?

正如Aamir在他的评论中所说,syncdb没有迁移功能,这就是为什么没有创建新的through表。我安装了django south,现在更新表完全按照预期进行。

相关内容

最新更新