簡體   English   中英

在Django中的多個模型上搜索查詢

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

我有兩個模型:

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)

我想創建一個像yelp.com這樣的搜索引擎 在此處輸入圖片說明

我希望人們以三種不同的方式進行搜索。

  1. 所有城市的一種業務。
  2. 一個城市中的所有類型的企業。
  3. 一種城市中的一種業務。

我已經嘗試過從itertools鏈,但到目前為止沒有結果。

我現在想做一個簡單的搜索,而不是使用外部搜索引擎。

感謝任何人的幫助。

您需要執行以下操作:
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')

這里唯一的問題-您需要確定用戶將如何選擇要運行的查詢,這意味着您將如何定義用戶要搜索的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM