Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django中多个模型的搜索查询_Python_Django_Search_Django Queryset - Fatal编程技术网

Python Django中多个模型的搜索查询

Python Django中多个模型的搜索查询,python,django,search,django-queryset,Python,Django,Search,Django Queryset,我有两种型号: class City(models.Model): name = models.CharField(max_length=50, verbose_name='Qyteti') slug = models.SlugField(unique=True) class Business(models.Model): name = models.CharField(max_length=120, verbose_name='emri') slug = m

我有两种型号:

class City(models.Model):
    name = models.CharField(max_length=50, verbose_name='Qyteti')
    slug = models.SlugField(unique=True) 

class Business(models.Model):
    name = models.CharField(max_length=120, verbose_name='emri')
    slug = models.SlugField(unique=True)
    city = models.OneToOneField(City, verbose_name='qyteti')
    created = models.DateTimeField(auto_now_add=True, verbose_name='krijuar')
    categories = models.ForeignKey(Category, related_name='businesses', verbose_name='kategoria')
    user = models.ForeignKey(User, related_name='user_businesses', verbose_name='autori')
    geom = gis_models.PointField(u"longitude/latitude", geography=True, blank=True, null=True)
我想创造一个像天使一样的天使

我希望人们用三种不同的方式进行搜索

所有城市都有一种类型的企业。 一个城市的所有类型的企业。 一个城市的一种业务类型。 我试过itertools的chain,但到目前为止没有结果

我现在只想做一个简单的搜索,而不是使用外部搜索引擎


感谢任何人的帮助。

您需要执行以下操作: 1.您的型号发生变化:

class Business(models.Model):
    city = models.ForeignKey(City, verbose_name='qyteti', related_name='businesses')
2项查询:

1) one_type = Business.objects.filter(name = "some_business_type").select_related('city')
one_type.city.name

2) one_city_all_business = City.objects.filter(name = "London").prefetch_related('businesses')
one_city_all_business.businesses.all() - here u get a list of all businesses for London

3) one_type_one_city = City.objects.filter(name = "London").filter(businesses__name = "some_business_type").prefetch_related('businesses')

这里唯一的问题是——你需要决定用户将如何选择要运行的查询,我的意思是你将如何定义用户想要搜索的内容。

这三种不同的方式会归结为一个查询集吗?也许,我只是希望结果像yelp一样。@skerdilajd hoxha你能在单独的答案中发布它吗?查看不同的方法总是很有用的。query=request.GET.GET'q'query2=request.GET.GET'q2'如果查询不是None并且query2不是None:businesss=Business.objects.filter Qname\uuuuuu icontains=query | Qcategories\uuuuu name\uuuuu icontains=query.filtercity\uuuuu name\uuuuuu icontains=query2.在表单中选择与城市相关的“城市”:正如我所见,Stackoverflow不喜欢回答您自己的问题:现在我在搜索结果分页方面遇到一些问题: