总的来说,我对 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)
