运行syncdn时,数据库表中省略了多对多字段

时间:2014-03-01 20:05:38

标签: django django-models django-forms django-templates

我有一个M2M关系的字段。当运行syncdb时,数据库上不会形成具有M2M字段的字段。 这是模型

class Eventgroups(models.Model):
    event=models.ManyToManyField(Event)
    group_name=models.CharField(max_length=100)

    def __unicode__(self):
        return "%s,  %s" \
            % (self.group_name, self.event)
    class Meta:
        db_table= 'eventgroup'
        verbose_name_plural='eventgroups'

事件字段未在数据库上创建 我很感激能够洞察这个问题 问候, 约书亚

2 个答案:

答案 0 :(得分:0)

一切都好。您只是不明白在SQL级别上如何实现ManyToMany。简单来说,这个

class Foo(models.Model):
    #...

class Bar(models.Model):
   foo = models.ManyToManyField(Foo)

在技术上与此相同:

class Foo(models.Model):
    #...

class Bar(models.Model):
    #...

class BarFoo(models.Model):
    foo = models.ForeignKey(Foo)
    bar = models.ForeignKey(Bar)

如果你要检查你的数据库 - 你会找到一个名为EventgroupsEvent的表或类似的包含实际字段的表。只有ORM才能让您直接连接模型。请read my answer here获取有关ManyToMany如何在后台运行的详细说明

答案 1 :(得分:0)

它不会创建一个名为event的字段,而是会创建一个新表 Eventgroups_event