我的电子商务网站有一个 models.py 定义了 3 个模型。最初,它只定义了两个Product
和Category
,但我意识到我需要能够用某些关键字标记我的产品,所以我添加了那个模型。当我尝试创建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
所有表都是使用适当的行和类型以及您期望的所有其他内容创建的。除了,由于类中建立了 ManyToMany 关系,它不会创建products_tags
您期望它创建的表Product
。为什么它成功地创建了products_categories
“通过”表而不是那个products_tags
?