#python #django
#python #django
Вопрос:
Привет, я новичок в django и пытаюсь создать сайт, подобный zomato.я хочу заполнить меню ресторанов, нажав на кнопку ресторана.у меня есть бизнес-модель, в которой сохраняются данные всех ресторанов, и модель меню, в которой меню ресторанов сохраняется с названием ресторана в качестве внешнего ключа, я заполнил рестораны до home.html как мне заполнить меню определенных ресторанов в store.html после щелчка по определенному ресторану надеюсь, я задаю правильный вопрос, вот мой код
models.py
class Business(models.Model):
bname=models.CharField(max_length=200,null=False)
specialities=models.CharField(max_length=200,null=True)
location=models.CharField(max_length=200,null=False)
# image=models.ImageField(null=True,blank=True)
def __str__(self):
return self.bname
@property
def imageURL(self):
try:
url=self.image.url
except:
url= ''
return url
class Menu(models.Model):
business=models.ForeignKey(Business,on_delete=models.CASCADE,blank=True,null=False)
dish_name=models.CharField(max_length=200,null=False)
price=models.IntegerField(null=False)
def __str__(self):
return self.dish_name
views.py
def home(request):
businesses= Business.objects.all()
context={'businesses':businesses}
return render(request,"foodapp/home.html",context)
def store(request):
menus=Menu.objects.get.all()
context={'menus':menus}
return render(request,"foodapp/store.html",context)
home.html
{% for business in businesses %}
<div class="col-md-4">
<div class="box-element product">
<img class="thumbnail" src="{% static 'images/assets/placeholder.png' %}" alt="">
<hr>
<h6><strong>{{business.bname}}</strong></h6>
<hr>
<h6>{{business.specialities}}</h6>
<h6>{{business.location}} amp;nbsp;amp;nbsp;
<button data-product={{business.id}} data-action="add" class="btn btn-outline-secondary add-
btn update-cart">
<a href="{% url 'store' %}"> View</a></button>
</h6>
{% endfor %}
store.html
{% block content %}
<div class="row">
<div class="container">
{% for menus in menu %}
<div style="margin-top: 20px;" class="col-md-4">
<div class="box-element product">
<img class="thumbnail" src="{% static 'images/assets/placeholder.png' %}" alt="">
<hr>
<h6><strong>{{menu.dish_name}}</strong></h6>
<hr>
<h6>Type:</h6>
<button data-product={{}} data-action="add" class="btn btn-outline-secondary add-btn update-
cart">
<a href="{% url 'cart' %}"> Add to Cart</a></button>
<h4 style="display: inline-block; float: right;">{{menu.price}}</h4>
</div>
</div>
{% endfor %}
</div>
{% endblock content %}
Ответ №1:
Вам нужно изменить свой urls.py
, чтобы принять идентификатор вместе с store
ex: store/1
и в вашем home.html
изменении URL с <a href="{% url 'store' %}"> View</a></button>
на <a href="{% url 'store' business.id %}"> View</a></button>
Urls.py
urlpatterns = [
# ...
path('store/<int:id>/', views.store),
# ...
]
Views.py
def store(request, id):
menus=Menu.objects.filter(business_id=id)
context={'menus':menus}
return render(request,"foodapp/store.html",context)
и исправить ошибку из store.html: {% for menus in menu %}
для {% for menu in menus %}