[英]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. 我希望人们以三种不同的方式进行搜索。
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.