我正在为自由职业者创建一个基于Django Web的应用程序,向他们支付在项目上工作的小时数,并为每周工作生成每周报告,为此我需要工作邮票,该如何实施?
我想创建一个启动计时器和停止计时器的按钮,以记录启动计时器和结束计时器的时间戳吗?
我有一个扩展到Freelancer和雇用Freelancer的人的用户模型。我该如何实现?
我在哪里编辑时间戳模型?
我有这个模特
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)
答案 0 :(得分:1)
这个问题有点笼统,我不确定它与时间戳有什么关系。但是您可能会想到一个“ 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;那么您就可以轻松地查询某项工作的总时间,并计算出总费用。
(请注意,您可能需要重新考虑模型,特别是将项目详细信息与租用者分开,否则每个租用者只能创建一个项目。)