【问题标题】:Complex lookup in djangodjango中的复杂查找
【发布时间】:2011-11-19 05:47:00
【问题描述】:

我有一个包含多个字段的类,其中两个是多对多字段:

class someClass(models.Model):
    field1 = ...
    field2 = ...
    field3 = ...
    field4 = models.ManytoManyField(...)
    field5 = models.ManytoManyField(...)

我原本希望以后可以使用someClass.objects.get(...)

someClass.objects.get(field1=..., field2=..., ...)

我还想限制由 field4 和 field5 返回的someClasses。我假设我不能在.get() 调用中执行此操作,因为这些表示可以采取多种形式的多对多关系。

在我一直在寻找唯一的 someClass 时,我可以访问与 field1-field3 中表示的对象相对应的几个变量,以及与这些对象相对应的两个简短对象列表在 field4 和 field5 中表示。这些应该一起描述一个独特的实例。

接受我可能必须在一系列.filter()s 中执行此操作,我获得数据的单个someClass 对象的最佳方法是什么(同样,field1-field3 的一个变量和两个field4 和 field5) 的列表描述?

【问题讨论】:

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


    【解决方案1】:

    我认为答案和你期望的一样明显......

    由于m2ms,您绝对不能在此处使用get - 您必须链接过滤器以排除包含不精确 m2m 匹配的结果。

    query = someClass.objects.filter(field1=field1, field2=field2, field3=field3)
    
    for item in list1:
       query = query.filter(foo=item)
    
    for item in list2:
       query = query.filter(bar=item)
    
    # substitute with fancy python as you wish.
    

    【讨论】:

      猜你喜欢
      • 2016-06-06
      • 1970-01-01
      • 1970-01-01
      • 2017-10-05
      • 2011-06-08
      • 2012-10-25
      • 2021-08-31
      • 2013-06-09
      相关资源
      最近更新 更多