python列表反向查询_python – Django Model API通过中间表反向查找多对多关系

我有一个居民,似乎无法获得居民所属的SSA集.我试过res.ssa_set.all().sas_set.all()和.ssa_resident_set.all().似乎无法管理它.通过另一个表进行反向m2m查找的语法是什么?

编辑:我得到一个’QuerySet as no attribute’错误.呃?

class SSA(models.Model):

name = models.CharField(max_length=100)

cost_center = models.IntegerField(max_length=4)

street_num = models.CharField(max_length=9)

street_name = models.CharField(max_length=40)

suburb = models.CharField(max_length=40)

post_code = models.IntegerField(max_length=4, blank=True, null=True)

def __unicode__(self):

return self.name

class Resident(models.Model):

cris_id = models.CharField(max_length=10, primary_key=True)

first_name = models.CharField(max_length=20)

last_name = models.CharField(max_length=20)

ssas = models.ManyToManyField('SSA', through='SSA_Resident', verbose_name="SSAs")

def __unicode__(self):

return self._get_full_name()

def _get_full_name(self):

return u"%s %s" %(self.first_name, self.last_name)

full_name = property(_get_full_name)

class SSA_Resident(models.Model):

id = models.AutoField(primary_key=True)

resident = models.ForeignKey('Resident')

ssa = models.ForeignKey('SSA', verbose_name="SSA")

active = models.BooleanField(default=True)

def __unicode__(self):

return u"%s - %s" %(self.resident.full_name, self.ssa.name)

解决方法:

我试图评估一个查询集对象,而不是对象本身.在查询集上执行get,然后查找关系集就可以了.我正在改变社区维基,把它留在这里只是因为别人和我一样愚蠢.

一个工作的例子:

resident = Resident.objects.filter(name='Johnny')

resident.ssa_set.all() # fail

resident = resident.get() # will fail if more than one returned by filter

resident.ssa_set.all() # works, since we're operating on an instance, not a queryset

标签:python,django,django-models,many-to-many

来源: https://codeday.me/bug/20190710/1424010.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值