我是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作者的例子&这本书适合我。我看到的唯一区别是数据库已经存在,我缺少一些基本设置。
任何建议都表示赞赏。