gpt4 book ai didi

django - 将所有时区作为 Django 模型的选择的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-02 03:27:26 26 4
gpt4 key购买 nike

我正在创建需要存储时区值的模型。现在,我正在另一个文件中使用 pytz 生成时区,将其转换为一个元组,然后将该元组调用到我的 models.py 中。像这样:

时区.py

import pytz
TIMEZONE_CHOICES = []
for tz in pytz.all_timezones:
TIMEZONE_CHOICES.append((tz, tz))
TIMEZONE_CHOICES = tuple(TIMEZONE_CHOICES)

模型.py

from .timezones import TIMEZONE_CHOICES

class MyModel(models.Model):
timezone = models.CharField(max_length=255, default='UTC', choices=TIMEZONE_CHOICES)

老实说,这似乎有点 hack-y。以这种方式生成时区会在将来引起问题吗?做这样的事情的理想方式是什么?

最佳答案

如果 Django 允许 choices to accept callables,您可以简单地传递一个 lambda 函数。但由于它(还)没有,您应该能够简单地在模型类中定义选择列表并使用 zip 函数动态生成元组。例如:

import pytz

class MyModel(models.Model):
TIMEZONE_CHOICES = zip(pytz.all_timezones, pytz.all_timezones)

timezone = models.CharField(max_length=255, default='UTC', choices=TIMEZONE_CHOICES)

我能看到的唯一问题是,如果将来从 tz 数据库中删除时区,当您尝试编辑时区时,选择框将为空一个记录。

关于django - 将所有时区作为 Django 模型的选择的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52848297/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com