Django-如何根据多个字段编辑数据库中的特定行?

马里亚纳·戈麦斯-库斯涅科夫

因此,我对此还很陌生,还没有时间坐下来做适当的学习。

我最终想要实现的是根据员工编号和工作区域,修改一个最初为NULL的时间戳到当前时间。其背后的想法是“签入/签出”系统。

首先,用户输入#和工作区,然后当他们“输入”时,将在数据库中创建一个条目,其中将#,工作区,进入时间和“超时”设置为NULL。完成后,只需再次输入#,工作区和“ Leave”,这将查找超时为NULL的最后一个条目,并且#和工作区相同,并将超时更新为新时间戳记。如果不存在,则会创建一个新条目,但会警告用户。

表格

class WarehouseForm(forms.Form):
    class Meta:
        model = EmployeeWorkAreaLog
        fields = ('employee_number', 'work_area', 'station_number')

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['station_number'].queryset = StationNumber.objects.none()

        if 'work_area' in self.data:
            try:
                work_area_id = int(self.data.get('work_area'))
                self.fields['station_number'].queryset = StationNumber.objects.filter(work_area_id=work_area_id).order_by('name')
            except (ValueError, TypeError):
                pass
        elif self.instance.pk:
            self.fields['station_number'].queryset = self.instance.work_area.stations.order_by('name')

models.py

class WorkArea(models.Model):
    name = models.CharField(max_length=50)

    def __str__(self):
        return self.name


class StationNumber(models.Model):
    work_area = models.ForeignKey(WorkArea, on_delete=models.CASCADE)
    name = models.CharField(max_length=50)

    def __str__(self):
        return self.name


class EmployeeWorkAreaLog(TimeStampedModel, SoftDeleteModel, models.Model):
    employee_number = models.IntegerField(max_length=50, help_text="Employee #", blank=False)
    work_area = models.ForeignKey(WorkArea, on_delete=models.SET_NULL, null=True, blank=False, help_text="Work Area", related_name="work_area")
    station_number = models.ForeignKey(StationNumber, on_delete=models.SET_NULL, null=True, help_text="Station", related_name="stations", blank=True)
    time_in = models.DateTimeField(auto_now_add=True, help_text="Time in", null=True, blank=True)
    time_out = models.DateTimeField(blank=True, help_text="Time out", null=True)

    def __str__(self):
        return self.employee_number

views.py

class EnterExitArea(CreateView):
    model = EmployeeWorkAreaLog
    template_name = "operations/enter_exit_area.html"
    form_class = WarehouseForm


    def form_valid(self, form):
        if 'enter_area' in self.request.POST:
            form.save()
            return HttpResponseRedirect(self.request.path_info)
        elif 'leave_area' in self.request.POST:
            return HttpResponseRedirect(self.request.path_info)


def load_stations(request):
    work_area_id = request.GET.get('work_area')
    stations = StationNumber.objects.filter(work_area_id=work_area_id).order_by('name')
    return render(request, 'operations/station_number_dropdown_options.html', {'stations': stations})
Ayush bansal

您可以像这样过滤EmployeeWorkAreaLog模型:

employee_log = EmployeeWorkAreaLog.objects.filter(employee_number=1234,work_area__name="East_Bay",station_number=1,time_out__isnull=True).first()
if not employee_log:
    # create new entry and alert user
else:
    employee_log.timeout = current_date_time
    employee_log.save()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django从数据库获取多个字段

来自分类Dev

Django从数据库获取多个字段

来自分类Dev

如何在django和MySQL中过滤数据库中的两个字段?

来自分类Dev

如何在django和MySQL中过滤数据库中的两个字段?

来自分类Dev

Django的。如何从数据库中的对象中删除字段?

来自分类Dev

如何在Django中创建用户特定的数据库?

来自分类Dev

Django-更新数据库中具有此值的每个字段

来自分类Dev

Django - 编辑 HTML 表格行并更新数据库

来自分类Dev

如何从 Django 模型中获取特定用户的数据并将每个字段存储在单独的变量中

来自分类Dev

在Django ORM外部编辑数据库

来自分类Dev

Django,如何根据外键值更新数据库?

来自分类Dev

Django ORM。从数据库中仅选择重复的字段

来自分类Dev

如何在Django模型中搜索多个字段

来自分类Dev

如何从Django的数据库模型中获取字段类型字符串

来自分类Dev

如何在Django中的字段上进行数据库分区?

来自分类Dev

如何使用Django中的数据库以表格形式动态加载ChoiceField的字段?

来自分类Dev

如何在MySQL数据库中更新Django模型字段

来自分类Dev

在Django中更改模型时如何填充数据库字段

来自分类Dev

如何在Django中的字段上进行数据库分区?

来自分类Dev

Django:如何使用多个数据库?

来自分类Dev

从Django中的多个数据库表返回结果

来自分类Dev

Django - 访问多个数据库中的值

来自分类Dev

如何在Django数据库中选择特定项目

来自分类Dev

如何以良好的方式将多个Django表单保存到数据库中?提升效能

来自分类Dev

如何更新数据库中的多个字段

来自分类Dev

Django数据库迁移:将两个字段合并为一个

来自分类Dev

在Django数据库中将两个字段相乘

来自分类Dev

django只读多个数据库

来自分类Dev

Django:如何对多个数据库进行数据库自省?

Related 相关文章

  1. 1

    Django从数据库获取多个字段

  2. 2

    Django从数据库获取多个字段

  3. 3

    如何在django和MySQL中过滤数据库中的两个字段?

  4. 4

    如何在django和MySQL中过滤数据库中的两个字段?

  5. 5

    Django的。如何从数据库中的对象中删除字段?

  6. 6

    如何在Django中创建用户特定的数据库?

  7. 7

    Django-更新数据库中具有此值的每个字段

  8. 8

    Django - 编辑 HTML 表格行并更新数据库

  9. 9

    如何从 Django 模型中获取特定用户的数据并将每个字段存储在单独的变量中

  10. 10

    在Django ORM外部编辑数据库

  11. 11

    Django,如何根据外键值更新数据库?

  12. 12

    Django ORM。从数据库中仅选择重复的字段

  13. 13

    如何在Django模型中搜索多个字段

  14. 14

    如何从Django的数据库模型中获取字段类型字符串

  15. 15

    如何在Django中的字段上进行数据库分区?

  16. 16

    如何使用Django中的数据库以表格形式动态加载ChoiceField的字段?

  17. 17

    如何在MySQL数据库中更新Django模型字段

  18. 18

    在Django中更改模型时如何填充数据库字段

  19. 19

    如何在Django中的字段上进行数据库分区?

  20. 20

    Django:如何使用多个数据库?

  21. 21

    从Django中的多个数据库表返回结果

  22. 22

    Django - 访问多个数据库中的值

  23. 23

    如何在Django数据库中选择特定项目

  24. 24

    如何以良好的方式将多个Django表单保存到数据库中?提升效能

  25. 25

    如何更新数据库中的多个字段

  26. 26

    Django数据库迁移:将两个字段合并为一个

  27. 27

    在Django数据库中将两个字段相乘

  28. 28

    django只读多个数据库

  29. 29

    Django:如何对多个数据库进行数据库自省?

热门标签

归档