Модуль 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
), или выполните все расчеты цены в методе, который получает объект сайта в качестве аргумента.