Python django在M2M关系中查找导航表
我试图编写一个函数来存储多个字段的串联sting,包括一些存储在M2M关系的关系表中的字段。 代码如下:Python django在M2M关系中查找导航表,python,django,many-to-many,lookup,Python,Django,Many To Many,Lookup,我试图编写一个函数来存储多个字段的串联sting,包括一些存储在M2M关系的关系表中的字段。 代码如下: class substance(models.Model): name = models.Charfield() ... class rel_med_subs(models.Model): id_med = models.ForeignKey(medication, related_name='relation_med') id_subs = models.Foreign
class substance(models.Model):
name = models.Charfield()
...
class rel_med_subs(models.Model):
id_med = models.ForeignKey(medication, related_name='relation_med')
id_subs = models.ForeignKey(substance, related_name='relation_subs')
order = models.IntegerField()
strength = models.FloatField(null=True, blank=True)
strength_unit = models.ForeignKey(units)
class medication(models.Model):
name = models.Charfield()
substance = models.ManyToManyField(substance, through='rel_med_subs')
autogenerated = models.CharField(blank=False, default='')
...
def save(self, force_insert=False, force_update=False):
self.autogenerated = u'%s' % (' '.join[(u'%s %s'(s.name, s.strength) for s in self.rel_med_subs.order_by('order')])
self(medication,self).save(force_insert,force_update
当我只询问名称时,函数工作正常,但如果我尝试从关系表中引入属性,django会抱怨强度不是实体模型的一部分
如何将关系中的属性获取到自动生成的字段中
谢谢 问题在于,
名称
和强度
属性属于不同的对象(强度
属于相关性
,名称
属于物质
)!你不能通过self.rel\u med\u subs.order\u by('order')中的s的(s.name,s.strength)来引用这两个词。
理解-s
只能有名称
或强度
rel\u med\u subs属性似乎是substance
类型而不是rel\u med\u subs
类型的对象的关系管理器。使用dir
检查medicing
的属性,以查看rel\u med\u subs
(可能类似于rel\u med\u subs\u set
——我真的记不起来了,总是用dir
检查它。但是请确保medicing
将有两个反向关系属性:一个用于与物质的多2个关系,另一个用于与rel\u med\u subs
的多2个关系找到正确的反向管理器,然后可以使用s.id\u subs.name
和s.strength
还请将您的类名大写,并使用相应的命名方式(相关的医学子类应命名为MedicineSubstanceration)