Manyrelatedmanager方法all()在m2m关系中返回空

时间:2015-12-12 08:37:42

标签: django-models

我是django框架的初学者,并且一直在努力获得m2m关系中的属性。

简单m2m模型在django自动创建m2m关系的中间表时工作正常。但是,我的要求是使用现有的mysql数据库,其中存在3个表脚本,testbed和script_testbed。

在python shell中,当我执行以下命令时,我得到一个空列表。

>>> from smapp.models import Script
>>> b = Script.objects.get(id=1)
>>> b.testbeds.all()
[]

我的Model.py看起来像:

class Testbed(models.Model):
    tb_id = models.IntegerField()
    tb_name = models.CharField(max_length=200)
    tb_platform = models.CharField(max_length=200)
    def publish(self):
        self.save()
    def __str__(self):
        return self.tb_name
    class Meta:
        db_table = "testbeds"  # Table name in db is testbeds.

class Script(models.Model):
    script_id = models.IntegerField()
    script_name = models.CharField(max_length=200)
    status_id = models.CharField(max_length=200)
    testbeds = models.ManyToManyField(Testbed,     through='ScriptsTestbed')
    def publish(self):
        self.save()
    def __str__(self):
        return self.script_name
    class Meta:
        db_table = "scripts"   # Table name in db is testbeds.

class ScriptTestbed(models.Model):
    scripts = models.ForeignKey(Script, db_column='script_id') #script_id is the column name in db table.
    testbed = models.ForeignKey(Testbed, db_column='testbed_id') #testbed_id is the column name in db table.
    def publish(self):
        self.save()
    def __int__(self):
        return self.script_id
    class Meta:
        db_table = "scripts_testbed" #Table name in db is scripts_testbed 

简单m2m作者的例子&这本书适合我。我看到的唯一区别是数据库已经存在,我缺少一些基本设置。

任何建议都表示赞赏。

0 个答案:

没有答案