Тестовая задача состоит в учете отработанного времени сотрудника и построении таблицы-табеля.
Модель:
class Callboard(models.Model):
"""Табель"""
user = models.ForeignKey(User, verbose_name="Сотрудник")
count_of_hours = models.IntegerField(max_length=1,
verbose_name="Количество отработанных часов")
date_of_day = models.DateField(verbose_name="День недели")
def __unicode__(self):
return str(self.date_of_day) + " " + str(self.user)
class UserModelChoiceField(ModelChoiceField):
def label_from_instance(self, obj):
# Возвращает строку в заданном виде: "Имя Фамилия (логин)"
return "%s (%s)"%(obj.get_full_name(), obj.username)
class CallboardForm(ModelForm):
user = UserModelChoiceField(User.objects.all().order_by('first_name'), label="Сотрудник")
class Meta():
model = Callboard
Форма отправляет мне POST-запрос в таком виде: <QueryDict: {u'date_of_day': , u'user': , u'count_of_hours': }>.
Если форма is_valid, я запрашиваю все объекты Callboard.odjects.all() и в цикле хочу проверить, есть ли уже запись для данного сотрудника и даты.
Видимо, я не знаю механизма, который позволяет автоматически производить данные действия, потому что путь приведения типов(id сотрудника к INT, а даты к datetime.date) для данных в POST-запросе и в БД, мне кажется излишне тернистым и неверным.
Прошу наставить меня на путь истины и в целом сказать, правилен ли такой подход, или надо рыть в другом направлении вообще.