#html #django
#HTML #django
Вопрос:
Я создал выпадающий селектор и хочу, чтобы данные извлекались из базы данных в соответствии с этим.
У меня есть две модели: Cuisine
и Dish
. Я выбрал все кухни в своем выпадающем списке (например, индийскую, британскую, французскую и т.д.) И хочу извлечь все блюда из базы данных в соответствии с этим.
Например, когда я выбираю Indian, тогда должны быть выбраны все блюда, связанные с ним, чтобы я мог отобразить их на домашней странице.
model.py
class Cuisine(models.Model):
name = models.CharField(max_length=100)
class Meta:
ordering = ['-id']
def __str__(self):
return self.name
class Dish(models.Model):
name = models.CharField(max_length=100)
image = models.ImageField(upload_to='dishes_pics')
description = models.TextField()
required_time_to_cook = models.CharField(max_length=100)
cuisine = models.ForeignKey(Cuisine, on_delete=models.CASCADE)
class Meta:
ordering = ['-id']
def __str__(self):
return self.name
views.py
from django.shortcuts import render
from django.http import HttpResponse
from .models import Cuisine,Dish
def select_cuisine(request):
dish_id = Dish.objects.get(pk = 1)
cuisine_id = Cuisine.objects.filter(cuisine=cuisine_id)
return render(request, 'cookbook/base.html', {'cuisine_type' : cuisine_id})
def home(request):
context = {
'dishes' : Dish.objects.all()
}
return render(request, 'cookbook/home.html',context)
index.html
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Select Cuisine</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
{% for type in cuisine_type %}
<a class="dropdown-item" href="#">{{ type.name }}</a>
{% endfor %}
</div>
</li>
Комментарии:
1. Пожалуйста, добавьте скриншот образца данных вашей базы данных
2. Привет, пример данных соответствует полям модели. Например, сначала я создал объект модели Cuisine (например, сначала создаю объект Cuisine и вставляю указанные поля в модель Dish.
Ответ №1:
Попробуйте это:
name ='Indian'
cuisine_id = Cuisine.objects.filter(name=name).values('id')
dishes = Dish.objects.filter(cuisine_id=cuisine_id).all()
Здесь мы сначала выбираем cuisine_id
из Cuisine
модели, где name='Indian'
. Затем выберите все детали из, Dish
где cuisine_id
Dish
равно cuisine_id
Cuisine
модели.