У меня есть приложение, которое работает в порядке регистрации заезда / отъезда. Люди просто вводят свои ID, площадь и нажимают кнопку «Регистрация», и она отправляет метку времени в БД с их информацией. Есть также кнопка «оформить заказ», которая в настоящее время ничего не делает. Он должен работать таким образом, чтобы после того, как человек заполнит форму и отправит ее, он выполнит одно из следующих действий:
- Найти предыдущую регистрацию в записи на основе введенного идентификатора и области иобновите выписку с NULL до отметки времени.
- Если человек забыл предварительно пройти регистрацию, то он создаст новую запись, указав только отметку времени выписки и идентификатор / область.
Я подумал, что попытка найти пользователя по совпадению идентификатора и зоны будет лучше, поскольку один и тот же человек может проверять / выводить данные из разных областей несколько раз в день, поэтому сопоставление только по идентификатору может вызвать проблему обновления программы неправильнополе в одной точке.
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
forms.py
class EnterExitArea(CreateView):
model = EmployeeWorkAreaLog
template_name = "operations/enter_exit_area.html"
form_class = WarehouseForm
def form_valid(self, form):
form.save()
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})
Я думаю, мойВопрос скорее в том, как я могу реализовать что-то подобное?
И, в настоящее время регистрация автоматически сохраняет временную метку при отправке, но она не должна изменять ее, когда нажата кнопка области извлечения, потому что это нарушит ее назначение.