2015-12-08 5 views
0

Мне было интересно, как я мог бы сделать эту работу.Django: Добавление определенных значений после обновления модели

Я в настоящее время делаю этот проект Django, который создает и модифицирует модель клиента, как таковые:

class Client(models.Model): 
    name = models.CharField(max_length=300) 
    birth_date = models.DateTimeField('birth date') 
    gender = models.CharField(max_length=1, choices=GENDER, null=True) 
    phone_number = models.CharField(max_length=13, null=True) 
    email = models.EmailField(max_length=254, null=True) 
    medical_condition = models.CharField(max_length=300, null=True) 
    experience = models.CharField(max_length=3, choices=EXPERIENCE, blank=True) 
    next_class = models.DateTimeField('next class') 

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

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

Заранее благодарим за это, и я приношу свои извинения, если это смутно. Я могу обновить свой пост с большим количеством кода, если это необходимо, просто не хотел задавать этот вопрос намного дольше.

+1

Извините, я не могу понять, что ваш вопрос здесь. Вы спрашиваете, как запрашивать все клиенты с 'next_class' в прошлом? –

+0

Я не могу понять ваш вопрос. Вы говорите о пользовательских запросах? –

+0

Да, извините! Поскольку 'next_class' является переменной, перезапись переменной означает, что я не могу ее использовать. Например, студент хочет принять класс в этот четверг, 10 декабря. Если я попытаюсь использовать общие представления форм для обновления next_class, предыдущее значение, которое я имел на 3 декабря, перезаписывается. Извините, это немного странно. – cherrera

ответ

0

Я думаю, что ваша модель неправильная. Кажется, вам нужна отдельная связанная модель для классов, которые принимает студент. Это может быть так просто, как:

class Class(models.Model): 
    client = models.ForeignKey('Client') 
    date = models.DateTimeField() 

так, что вместо изменения поля в модели клиента, необходимо добавить новую строку в модели класса. Тогда это будет достаточно просто запросить все классы для клиента между двумя датами:

classes_taken = my_client.class_set.filter(date_range=[start_date, end_date]) 

где my_client является экземпляром Клиента и start_date и end_date являются соответствующими датами.

+0

Это имеет большой смысл, но классы не имеют явной даты начала и окончания, как таковой. Например: Джон регистрируется в классе 15 декабря в 15:00, а теперь хочет взять еще 3 января в 13:00, а другой - 8 января, 17:00. Как я могу сохранить оба значения. Все, что я хочу, - это хранить все прошлые и будущие классы, чтобы я мог получить к ним доступ позже в списке или словаре какого-либо рода. Я не уверен, что это возможно. Вот почему я пытаюсь использовать 'next_class', а не отдельную модель. – cherrera

Смежные вопросы