所以我有一些需要从界面配置的设置。
@register_setting
class TierPricingSettings(BaseSetting):
Monday = models.CharField(max_length=255)
Tuesday = models.CharField(max_length=255)
Wednesday = models.CharField(max_length=255)
Thursday = models.CharField(max_length=255)
Friday = models.CharField(max_length=255)
Saturday = models.CharField(max_length=255)
Sunday = models.CharField(max_length=255)
content_panels_english = [
FieldPanel('Monday'),
FieldPanel('Tuesday'),
FieldPanel('Wednesday'),
FieldPanel('Thursday'),
FieldPanel('Friday'),
FieldPanel('Saturday'),
FieldPanel('Sunday'),
]
但是我似乎无法从代码段访问这些值?这是因为documentation指出您只能使用python
进行访问 my_settings = TierPricingSettings.for_site(request.site)
但是,片段无法访问请求对象。如何实现可通过管理面板配置的设置,以及如何在代码段中访问这些值。
答案 0 :(得分:0)
wagtail.contrib.settings模块的工作原理是Wagtail安装中的每个站点都有自己的一组设置。代码段没有内置的属于特定站点的概念(并且更一般而言,模型代码应独立于当前请求而工作),因此,在这里我们需要其他方法来识别要查找哪个站点的设置。
如果您仅在此Wagtail实例上运行单个站点,并且无意添加更多站点,则可以使用以下命令告诉它从一个站点也是唯一站点获取设置:
from wagtail.core.models import Site
my_settings = TierPricingSettings.for_site(Site.objects.first())
如果您有多个网站(或将来可能会使用),但是您希望将全局TierPricingSettings
对象应用于所有地方,则最好的方法是将您的一个网站设置为“设置”下的“默认网站” ->网站,并确保您在管理员中填写TierPricingSettings
时选择了该网站。然后按如下所示查找适当的站点:
from wagtail.core.models import Site
my_settings = TierPricingSettings.for_site(Site.objects.get(is_default_site=True))
如果您希望设置根据当前活动的网站而有所不同,则需要更新代码段模型以具有明确的网站所属概念(例如,将外键添加到Site
),或使用将网站对象作为参数的方法进行所有定价。