django - 如果用户已选择,则将复选框设置为禁用
问题描述
我设计了一个带有复选框代码的座位布局,看起来像这样
<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")
解决方案
您当前正在将座位号的 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>
推荐阅读
- javascript - setTimeout(function() 在 javascript 中不起作用
- c# - 在 Target 之外访问 PropertyGroup
- javascript - 将复选框和输入框值附加到 html 表
- c# - 不在单引号内时匹配的正则表达式
- javascript - 将数组的每个元素写入文件的新行的最佳方法是什么?
- javascript - 使用 socket.io、react.js 和 node.js 进行实时通知
- mysql-workbench - 从 MySQL Workbench 恢复或访问工作区
- java - 使用 Docker 桥接网络时无法在集成测试中获取 JDBC 连接
- scala - 从 sbt 文档实现命令更改
- amazon-web-services - aws-sdk,如何将 JSONArray 发送到 DynamoDB updateItem() 方法?