首页 > 解决方案 > 如果用户已选择,则将复选框设置为禁用

问题描述

我设计了一个带有复选框代码的座位布局,看起来像这样

        <div class="asiento">
          <input type="checkbox" value="1" id="asiento1" name="check" >
          <label for="asiento1">1</label>
        </div>
        <div class="asiento">
          <input type="checkbox" value="2" id="asiento2" name="check" />
          <label for="asiento2">2</label>
        </div>
        <div class="asiento">
          <input type="checkbox" value="3" id="asiento3" name="check" />
          <label for="asiento3">3</label>
        </div>
        <div class="asiento">
          <input type="checkbox" value="4" id="asiento4" name="check" />
          <label for="asiento4">4</label>
        </div>
        <div class="asiento">
          <input type="checkbox" value="5" id="asiento5" name="check" />
          <label for="asiento5">5</label>
        </div>

我尝试使用循环从数据库中获取数据,我得到这样的输出

['1', '2'] ['5']

我可以做些什么来删除 [ ] 也许使用 JQuery 或 JS 来禁用其他用户已经选择的复选框,这是我用来获取价值的循环

      {% for seat in seat %}
         {{seat.useat}}
      {% endfor %}

Django modal.py

class Bookings(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
shows = models.ForeignKey(Shows, on_delete=models.CASCADE)
useat = models.CharField(max_length=100)
def __str__(self):
    return self.user.username +" | "+ self.shows.movie.movie_name +" | "+ self.useat

视图.py

def booked(request):
if request.method == 'POST':
    user = request.user
    seat = request.POST.getlist('check')
    show = request.POST['show']
    book = Bookings(useat=seat, shows_id=show, user=user)
    book.save()
    return render(request,"booked.html")

标签: djangodjango-modelsdjango-formsdjango-templatesdjango-views

解决方案


您当前正在将座位号的 python 列表保存为useat字段中的字符串,这有点使数据无法使用。

也许这样的事情会起作用:

class Bookings(models.Model):
    ...
    @property
    def useat_as_list(self):
        return self.useat.split(',')
def booked(request):
    if request.method == 'POST':
        ...
        seat = ','.join(request.POST.getlist('check'))
        ...
<div class="asiento">
    <input type="checkbox" value="1" id="asiento1" name="check" {% if '1' in seat.useat_as_list %}disabled{% endif %}>
    <label for="asiento1">1</label>
</div>

推荐阅读