Django根据模型更新文件var

时间:2012-08-10 12:54:52

标签: python django-models

我有一个文件,其内容取决于模型。 奇怪的是:在更新模型的数据时,它不会直接回应该文件中的变量!我被迫重启我的开发服务器以获取新数据。

作为一种解决方案,我使用'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

1 个答案:

答案 0 :(得分:1)

解决这个问题的唯一方法是首先不要使用全局状态。创建一个使用属性的类,每次都从适当的位置提取数据,如果需要,可以选择实现缓存。