как я могу получить идентификатор модели из onclick

#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 %}