Skip to main content
 首页 » 编程设计

python之Django 在多对多关系中获取相关对象

2024年08月26日31mengfanrong

总的来说,我对 Django 和 Python 还很陌生,我正在开发我的第一个独立应用程序,但我在弄清楚如何使用我的模型做某事时遇到了一些麻烦:

class A(models.Model): 
    bs = models.ManyToManyField('B', null=True, blank=True, related_query_name='the_thing', db_table='A_B_relation') 
    name = models.CharField(max_length=50,unique=True) 
 
    def __str__(self):              # __unicode__ on Python  
        return self.name 
 
class B(models.Model): 
    url = models.URLField(null=True, blank=True) 
    name = models.CharField(max_length=50,unique=True) 
 
    def __str__(self):              # __unicode__ on Python  
        return self.name 

我想做的是获取与 B 的特定对象相关的 A 的所有对象的列表,这可能吗?

我可以从 A 中过滤具有相关名称的所有 B,并获取 B 中具有该关系的所有事物的列表:

>>> B.objects.filter(the_thing__name='abc') 
    [/B: Bob>, /B: Jim>] 

(“/”应该是“<”,不确定如何格式化),所以我认为可以反过来。

感谢任何帮助,谢谢。

请您参考如下方法:

您可以检索与特定 B 对象相关的 A 对象列表:

b_object = B.objects.get(name='Bob') 
A.objects.filter(bs=b_object) 

如果你有一个 B 对象的列表

b_object_list = B.objects.filter(name__in=['Bob', 'Jim']) 
A.objects.filter(bs__in=b_object_list)