我正在尝试编写一个搜索函数,以查找从一家餐馆预订的桌子,我有一个餐厅模型:
class Restaurant(models.Model):
"""
Table Restaurant
=======================
This table represents a restaurant with all necessary information.
"""
name = models.CharField(max_length=70)
caterer = models.ForeignKey(Caterer, on_delete=models.CASCADE, null=True)
address = models.OneToOneField(Address, on_delete=models.CASCADE, null=True)
kitchen_type = models.IntegerField(choices=KITCHEN_TYPE, null=True)
opening_hours = models.OneToOneField(OpeningHours, on_delete=models.CASCADE, null=True)
description = models.CharField(max_length=2000, null=True)
phone = models.CharField(max_length=15, null=True)
parking_options = models.BooleanField(default=False)
它为kitchen_type提供了一个枚举:
KITCHEN_TYPE = [
(1, "Turkish"),
(2, "Italian"),
(3, "German"),
(4, "English"),
(5, "Indian"),
]
这是view.py中的搜索函数:
def search_result(request):
if request.method == "POST":
searched = request.POST['searched']
result = Restaurant.objects.filter(
Q(name__icontains=searched) | Q(address__city__icontains=searched))
return render(request, 'search_result.html', {'searched': searched, 'result': result})
else:
return render(request, 'search_result.html', {})
那么,我如何在视图中搜索kitchen_type呢?
发布于 2022-04-29 07:13:39
与其使用元组列表,我建议扩展Django提供的IntegerChoices
或TextChoices
类。下面是一个如何使用IntegerChoices
的示例
>>> class KitchenType(models.IntegerChoices):
... TURKISH = 1
... ITALIAN = 2
... GERMAN = 3
...
>>> if 1 in KitchenType:
... print(True)
...
True
https://docs.djangoproject.com/en/4.0/ref/models/fields/#enumeration-types
https://stackoverflow.com/questions/72051927
复制相似问题