Python 用户使用的Django日期格式
我正在编写一个Django应用程序,它要求用户能够通过API(problay GraphQl)创建自己的时间格式。我已经想出了下面的方法,但对于相对较小的问题来说,这似乎是非常困难的解决方案Python 用户使用的Django日期格式,python,django,datetime,Python,Django,Datetime,我正在编写一个Django应用程序,它要求用户能够通过API(problay GraphQl)创建自己的时间格式。我已经想出了下面的方法,但对于相对较小的问题来说,这似乎是非常困难的解决方案 class Formatter(models.Model): ... class DateLetter(models.Model): formatter = models.ForeignKey(Formatter, relat
class Formatter(models.Model):
...
class DateLetter(models.Model):
formatter = models.ForeignKey(Formatter,
related_name="letters",
on_delete=models.CASCADE)
index = models.IntegerField(db_index=True)
letter = models.CharField(max_length=255,
unique=True,
choices=LetterChoices.CHOICES,
default=LetterChoices.Y)
然后,进行某种循环,以日期格式(%Y-%m-%d)等形式获取实例。您是对的,创建整个数据库模型只是为了表示字符串是一个非常核心的解决方案。以下是两种替代方法: 一,。使用常规字段并验证输入字符串是否仅包含某些字符:
from django.core.validators import RegexValidator
class Formatter(models.Model):
letters = models.CharField(max_length=6, validators=[RegexValidator(r"^[YyMmDd]{6}$")])
二,。不要让用户键入自己的格式,而是询问他们希望使用哪种语言环境作为日期。您可以激活区域设置并获取其日期格式列表,如下所示:
>>> from django.utils.translation import activate
>>> from django.utils.formats import get_format
>>> activate('sv_SE') # locale for Sweden
>>> get_format('DATE_FORMAT')
'j F Y'