简体   繁体   English

在Django中的多个模型上搜索查询

[英]Search query on more than one model in Django

I have two models: 我有两个模型:

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)

I want to create a serach like yelp.com 我想创建一个像yelp.com这样的搜索引擎 在此处输入图片说明

I want people to search in three different ways. 我希望人们以三种不同的方式进行搜索。

  1. One type of business in all cities. 所有城市的一种业务。
  2. All type of businesses in one city. 一个城市中的所有类型的企业。
  3. One type of business in one city. 一种城市中的一种业务。

I've tried chain from itertools, but no results so far. 我已经尝试过从itertools链,但到目前为止没有结果。

I'd like to do just a simple search for now, not with external search engines. 我现在想做一个简单的搜索,而不是使用外部搜索引擎。

Anyone's help is appreciated. 感谢任何人的帮助。

You need to do the following: 您需要执行以下操作:
1) Change in your model: 1)更改模型:

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

2) Queries: 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')

The only problem here - you need to decide how user will select what query to run, I mean how will you define what user wants to search for. 这里唯一的问题-您需要确定用户将如何选择要运行的查询,这意味着您将如何定义用户要搜索的内容。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM