我有一个包含ManyToManyField的模型。看起来像这样。
applicable_events = models.ManyToManyField(Event)
我正在尝试基本上使用以下内容进行搜索:
if 'Video' in prop.applicable_events.all():
print("here")
但是它没有完全按照我的预期工作。我希望它搜索那个apply_event(这是另一个模型)。 apply_event模型包含一个名为“ name”的字段,我正尝试对其进行搜索。
如果我做这样的事情
print(prop.applicable_events.all().filter(name=cur_event))
它打印
<QuerySet [<Event: Video Sign In Started>]>
所以基本上,我试图找出其中是否包含字符串“ Video”。
答案 0 :(得分:1)
您可以通过以下方式搜索是否存在此类事件:
if prop.applicable_events.filter(name__icontains='Video').exists():
# …
pass
,或者如果您想精确匹配 :
if prop.applicable_events.filter(name='Video').exists():
# …
pass
'Video'
中的prop.applicable_events.all()
不起作用的原因是,它是 QuerySet
s 的Event
(一个集合)像'Video'
与带有Event
的{{1}}是不同的,并且如果name
是'Video'
的子字符串,则肯定不同。