Как хранить многократное время в полях Django? - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть такая ситуация, когда мне нужно хранить несколько значений для одной строки. Например, допустим, я создаю модель приема к врачу, в которой хранятся его имя и доступное время для этого конкретного врача.

doctor_name |available_timing

ABC |7: 00-11: 00, 17: 00-22: 00

Я думаю об использовании поля JSON, как это

from django.db import models
from django.contrib.postgres.fields import JSONField

class DoctorAppointment(models.Model):
    name = models.CharField(max_length=100)
    slug = models.SlugField(max_length=100)
    available_timing = models.JSONField()

Есть ли лучший подход для решениятакая проблема?

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

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

import ast    
timings = ['20:10-20:50', '21:30-22:00']
timings_str = str(timings)
#data saving code

Когда вам нужно извлечь массив из строки

ast.literal_eval(timings_str)

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

0 голосов
/ 07 ноября 2019

Затем следует использовать тип массива или создать отдельную таблицу и установить там отношение OneToMany, ИМХО.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...