как отобразить выпадающее поле, предопределенное в моей модели?

#python #django #django-models

#python #django #django-модели

Вопрос:

я хочу отобразить свой статус, представленный в виде выпадающего списка на HTML-странице, на которой уже есть предопределенные варианты в моей модели, как показано ниже.

     class ItemDetails(models.Model):
STATUS = (
    ('In-Stock', 'In-Stock'),
    ('Out-of-Stock', 'Out-of-Stock'),
    ('issued-to', 'issued-to')
)
serial_no = models.CharField(max_length=50,null=True)
rem_qty = models.IntegerField(default=0)
status = models.CharField(max_length=30, default='In-stock', choices=STATUS)
model_no=models.ForeignKey(Items,on_delete= models.CASCADE)
issued_to =models.ForeignKey(Prosecutions,on_delete=models.CASCADE)
employee_name=models.CharField(max_length=50,null=True)
created = models.DateTimeField(default=datetime.now())
 

Комментарии:

1. статус — это поле, которое я хочу отобразить в виде выпадающего меню в моем HTML-формате.

2. Пожалуйста, добавьте галочки в кодовом ограждении, чтобы сделать его читаемым, а также контекст вопроса

Ответ №1:

ниже приведены изменения, которые вам нужно внести в свои представления, вам нужно передать свой выбор, в моем случае это СТАТУС.

     def add_items_details(request):
    prosecutions=Prosecutions .objects.all()
    items=Items.objects.all()
    return render(request,'add_items_details.html',  {"prosecutions":prosecutions,"items":items,
                     "status":ItemDetails.STATUS })
    def edit_item_details_form(request,id):
    prosecutions = Prosecutions.objects.all()
    items = Items.objects.all()
    itemdetails = ItemDetails.objects.get(id=id)
    return render(request,'edit_item_details_form.html',{"itemdetails": itemdetails,"items":items,                                                       "prosecutions":prosecutions,"status":ItemDetails.STATUS})
 

в вашем HTML-шаблоне вам необходимо добавить приведенное ниже для отображения всех доступных выпадающих вариантов статуса при добавлении itemdetails

     <div class="col">
    <label>Status</label>
      <select class="form-control" name="status">
      {% for x,y in status %}
        <option value="{{x}}">{{ y }}</option>
      {% endfor %}
      </select>
  </div>
 

и чтобы отобразить поле выбора в том виде, в каком оно было выбрано на странице itemdetails при редактировании, вам понадобится приведенный ниже код в редактируемом html

     <div class="col">
            <label>Status</label>
            <select class="form-control" name="status">
            {% for x,y in status %}
                <option value="{{x}}" {% if x == itemdetails.status %} selected {%  endif %}>{{ x }}</option>
            {% endfor %}
            </select>
        </div>