首页 > 解决方案 > 将时间戳存储到数据库

问题描述

我正在为自由职业者创建一个基于 Django 网络的应用程序,他们将根据他们在项目上工作的小时数获得报酬,并且每周工作都会生成每周报告,为此我需要使用时间戳,所以如何我执行它吗?

我想创建一个启动定时器和停止定时器的按钮,记录启动定时器和结束定时器的时间戳?

我有一个用户模型,它扩展到自由职业者和雇用自由职业者的人。我该如何实施?

我在哪里编辑时间戳模型?

我有这个模型

from django.db import models
from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    is_freelancer = models.BooleanField('Freelancer status', default=False)
    is_hirer = models.BooleanField('Hirer status', default=False)

class Freelancer(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    hourly_rate = models.PositiveIntegerField(default=10)
    education = models.TextField(default='asia')
    professional_bio = models.TextField(blank=True, null=True)
    professional_title = models.TextField(blank=True, null=True)
    location = models.CharField(max_length=10, blank=True, null=True)
    Address = models.CharField(max_length=100, blank=True, null=True)
    city = models.CharField(max_length=100, blank=True, null=True)
    postal_code = models.PositiveIntegerField(blank=True, null=True)
    country = models.CharField(max_length=100, blank=True, null=True)


class Hirer(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    hourly_budget = models.PositiveIntegerField(blank=True, null=True)
    project_title = models.CharField(max_length=100, default='hi')
    project_description = models.TextField(blank=True, null=True)
    job_category = models.CharField(max_length=100)
    professional_bio = models.TextField(blank=True, null=True)
    professional_title = models.TextField(blank=True, null=True)
    location = models.CharField(max_length=10, blank=True, null=True)
    Address = models.CharField(max_length=100, blank=True, null=True)
    city = models.CharField(max_length=100, blank=True, null=True)
    postal_code = models.PositiveIntegerField(blank=True, null=True)
    country = models.CharField(max_length=100, blank=True, null=True)

标签: djangodjango-modelsdjango-rest-frameworkdjango-formsdjango-views

解决方案


这个问题有点宽泛,我不确定它与时间戳有什么关系。但是你可能会想到一个“TimeWorked”模型,它对雇佣者和自由职业者都有外键:

class TimeWorked(models.Model):
    hirer = models.ForeignKey('Hirer', on_delete=models.CASCADE)
    freelancer = models.ForeignKey('Freelancer', on_delete=models.CASCADE)
    rate = models.IntegerField()
    start_time = models.DateTimeField(auto_now_add=True)
    end_time = models.DateTimeField(null=True, blank=True)

所以你可以在一个时间段的开始创建这个类的一个实例,然后在最后填写 end_time;然后您可以轻松查询某项工作的总工作时间,并计算要计费的总时间。

(请注意,您可能需要重新考虑您的模型,尤其是将项目细节与租用者分开,否则每个租用者只能创建一个项目。)


推荐阅读