Хранить метки времени в базе данных - PullRequest
0 голосов
/ 19 июня 2019

Я создаю веб-приложение Django для фрилансеров, чтобы им платили за количество часов, которые они отработали над проектом, а также за еженедельную работу должен быть создан еженедельный отчет, и для этого мне нужно работать со временем. марки, так как мне это реализовать?

Я хочу создать кнопку таймера запуска и таймера остановки, которая записывает отметки времени таймера запуска и таймера окончания?

У меня есть модель User, которая распространяется на фрилансера и человека, который нанимает фрилансера. Как мне это реализовать?

Где я могу редактировать модель меток времени?

У меня есть эта модель

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)

1 Ответ

1 голос
/ 19 июня 2019

Этот вопрос немного широк, и я не совсем уверен, что он имеет отношение к временным меткам. Но вы можете подумать о модели «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; затем вы можете легко запросить общее количество времени, потраченное на работу, и рассчитать общую сумму к счету.

(Обратите внимание, что вы, возможно, захотите немного переосмыслить свои модели, особенно отделяя детали проекта от нанимателя, в противном случае каждый наниматель может создать только один проект.)

...