我有一个文件,其内容取决于模型。 奇怪的是:在更新模型的数据时,它不会直接回应该文件中的变量!我被迫重启我的开发服务器以获取新数据。
作为一种解决方案,我使用'reload'重新加载包含相关变量的模块!我认为这不是一个很好的方法(在每次更新后重新加载)以便能够看到数据。
有没有办法直接更新和查看数据而无需重新加载?
这是我的代码:http://pastebin.com/97BPqh0L我在重新加载部分有一个评论
# parametres/conf.py
from .models import ConfigApp
if ConfigApp.objects.exists():
config = ConfigApp.objects.all()[0]
else: config = None
EMPLOYE_BY_COMPAGNY = config.user_compagnie if config else 7
ANNONCES_LIFETIMES = config.annonce_days if config else None
IMAGE_SIZE = config.taille_image*1024 if config else 102400
#####################################################"
# compte/admin.py
from societe.models import Compagnie
from .forms import EmployeAdminForm,NewEmployeAdminForm
from django.contrib import admin
from django.contrib.auth.models import User,Group
import parametres.conf
class EmployeAdmin(admin.ModelAdmin):
list_display = ['user','identite','email','societe','is_active']
list_filter = ('is_active','societe')
form = NewEmployeAdminForm
search_fields = ("user__username",)
user_obj = None
def has_add_permission(self,request):
reload( parametres.conf) #here reloading
if request.user.is_superuser or request.user.groups.filter(name='admin').exists():
return True
elif request.user.groups.filter(name='client').exists():
if Gestionnaire.objects.filter(employe__user=request.user,is_active=True).exists():
employe = request.user.employe_set.all()[0]
if Employe.objects.filter(societe=employe.societe).count() >= parametres.conf.EMPLOYE_BY_COMPAGNY:
return False
return True
return False
答案 0 :(得分:1)
解决这个问题的唯一方法是首先不要使用全局状态。创建一个使用属性的类,每次都从适当的位置提取数据,如果需要,可以选择实现缓存。