【Django-CI系统】模板选项自动产生-20220501

该博客介绍了如何在Django框架下创建一个员工奖品申请功能。通过HTML模板展示奖品列表,允许员工选择奖品并提交申请。在`models.py`中定义了`reward`和`reward_apply`模型,`views.py`处理POST请求,验证申请信息并保存到数据库。如果申请满足条件(如奖品存在、数量合法、积分充足、库存足够),则申请成功,否则不进行操作。
摘要由CSDN通过智能技术生成

效果:模板选项自动产生

在这里插入图片描述

模板

                      <tr>
                        <th scope="row" for="inputGroupSelect01">申请奖品名称</th>
                        <td>
                            <select class="custom-select" required="required" name="reward_apply_name" id="reward_apply_name">
                              {% for rewarditem in reward_list %}
                                <option value='{{ rewarditem.reward_name }}'>{{ rewarditem.reward_name }}</option>
                              {% endfor %}
                            </select>
                        </td>
                      </tr>

models.py


class reward(models.Model):
    # 奖品
    id = models.AutoField(primary_key=True)
    reward_name = models.CharField(max_length=135, blank=True, null=True, verbose_name=u'奖品名称')
    reward_image = models.ImageField(max_length=135, blank=True, null=True, verbose_name=u'奖品照片',upload_to='static\images')
    reward_score = models.IntegerField(blank=True, null=True,verbose_name=u'奖品积分')
    reward_inventory_total = models.IntegerField(blank=True, null=True, verbose_name=u'奖品入库总量')
    reward_inventory_used = models.IntegerField(blank=True, null=True, verbose_name=u'奖品使用量')
    reward_inventory_left = models.IntegerField(blank=True, null=True, verbose_name=u'奖品剩余量')
    class Meta:
        db_table = u'reward'
        verbose_name = u'奖品'
        verbose_name_plural = u'奖品'

    def __str__(self):
        return self.reward_name




class reward_apply(models.Model):
    # 奖品申请记录
    id = models.AutoField(primary_key=True)
    reward_apply_employeeid = models.CharField(max_length=135, blank=True, null=True, verbose_name=u'申请者工号')
    reward_apply_employeename = models.CharField(max_length=135, blank=True, null=True, verbose_name=u'申请者姓名')
    reward_apply_name = models.CharField(max_length=135, blank=True, null=True, verbose_name=u'申请奖品名称')
    reward_apply_name_fk = models.ForeignKey(reward,  blank=True, null=True, on_delete=models.CASCADE,related_name='reward_apply')
    reward_apply_score = models.IntegerField(blank=True, null=True,verbose_name=u'申请奖品积分')
    reward_apply_number = models.IntegerField(blank=True, null=True, verbose_name=u'申请奖品数量')
    reward_apply_datetime = models.DateTimeField(blank=True, null=True, verbose_name=u'申请奖品时间')
    reward_apply_reviewByCI = models.CharField(max_length=135, blank=True, null=True,choices=(('朱慧敏','朱慧敏'),),  verbose_name=u'CI审核者')
    reward_apply_finished = models.CharField(max_length=135, blank=True, null=True,choices=(('审核中','审核中'),('已核准','已核准'),('已拒绝','已拒绝')),  verbose_name=u'申请奖品状态')
    class Meta:
        db_table = u'reward_apply'
        verbose_name = u'奖品申请'
        verbose_name_plural = u'奖品申请'

    def __str__(self):
        return self.reward_apply_employeeid  + '申请' + self.reward_apply_name

views.py


@login_required
def reward_apply_by_employee(request):
    '''员工申请奖品兑换'''
    reward_list = reward.objects.all()

    print(request.POST)

    # 获取POST数据
    reward_apply_employeeid = request.POST.get('reward_apply_employeeid', '')
    reward_apply_employeename = request.POST.get('reward_apply_employeename', '')
    reward_apply_name = request.POST.get('reward_apply_name', '')
    reward_apply_score = request.POST.get('reward_apply_score', '')
    reward_apply_number = request.POST.get('reward_apply_number','')
    reward_apply_datetime = request.POST.get('reward_apply_datetime','')
    reward_apply_reviewByCI = request.POST.get('reward_apply_reviewByCI','')
    reward_apply_finished = request.POST.get('reward_apply_finished','')

    '''更新reward_apply模型'''
    # 条件如下: 1)品名正确, 2)数量大于1的整数,  3)有足够积分,  4)库存足够, 
    if reward_apply_employeeid and reward_apply_name and reward_apply_number>=1 and reward_apply_datetime:

        reward_apply_self = reward_apply.objects.create(reward_apply_employeeid = reward_apply_employeeid,
                    reward_apply_employeename = reward_apply_employeename,
                    reward_apply_name = reward_apply_name,
                    reward_apply_name_fk = reward.objects.filter(reward_name=reward_apply_name)[0],
                    reward_apply_score = int(reward.objects.filter(reward_name=reward_apply_name)[0].reward_score) * int(reward_apply_number),
                    reward_apply_number = reward_apply_number,
                    reward_apply_datetime = reward_apply_datetime,
                    reward_apply_reviewByCI = reward_apply_reviewByCI,
            )
        return HttpResponse('申请成功!')

    else:
       pass

    #上下文内容字典
    context = {'reward_list':reward_list}
    return render(request, 'reward_apply_by_employee.html',context=context)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值