'ManyToOneRel'对象搜索后没有属性'verbose_name'错误

问题描述 投票:0回答:1

我有一个应用程序,在该应用程序中,我在要约模型中创建了要约和承包商之间的关系:

contractor = models.ForeignKey(Contractor, on_delete=models.CASCADE)

除一件事外,一切正常。当我尝试使用详细名称搜索Contractors模型时,收到Atributeerror:'ManyToOneRel'对象没有属性'verbose_name'

下面搜索代码(contractors / views.py):

    def get(self,request):
        contractors = self.model.objects.all()

        if 'search' in request.GET:
            search_for = request.GET['search']
            if search_for is not '':
                filter = request.GET['filterSelect']
                search_in = [field.name for field in Contractor._meta.get_fields() if field.verbose_name==filter]
                kwargs = {'{0}__{1}'.format(search_in[0], 'contains'): search_for}
                contractors = self.model.objects.all().filter(**kwargs)

如果在构造函数模型上执行搜索并且构造函数模型没有与Offer模型相关的字段,为什么会收到错误消息?我该如何解决?或如何创建搜索栏,用户可以在其中从包含模型字段所有详细名称的下拉列表中选择要搜索的位置?

django search
1个回答
0
投票
因为您没有设置verbose_name

contractor = models.ForeignKey(Contractor, on_delete=models.CASCADE, verbose_name='Contractor Details')

但是问题是为什么您仍然要搜索verbose_name。列表理解search_in应该做什么? 
© www.soinside.com 2019 - 2024. All rights reserved.