2

私の e コマース サイトには、3 つのモデルを定義する models.py があります。Product最初はとの 2 つしか定義されていませんでし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すべてのテーブルが適切な行と型、および期待されるすべてのもので作成されます。products_tagsただし、クラスで確立された ManyToMany 関係のために、作成することを期待するテーブルは作成されませんProductproducts_categories「スルー」テーブルが正常に作成されるのに、テーブルが作成されないのはなぜproducts_tagsですか?

4

1 に答える 1

1

Aamir がコメントで述べたように、syncdb には移行機能がないため、新しいスルー テーブルが作成されませんでした。django south をインストールしましたが、テーブルの更新が期待どおりに行われています。

于 2013-03-29T19:17:53.833 に答える