是否可以在django admin中有条件地注册或注销模型?我希望某些模型仅在请求满足某些条件时才会出现在django admin中。在我的特定情况下,我只需要检查登录用户是否属于某个特定组,并且如果该用户(即使超级用户)不在该组中,则无需显示模型。我不能在这里使用权限,因为不能排除使用权限的超级用户。或者,有没有办法撤销甚至超级用户在模型上的权限。
我有一个奇怪的难题,我需要在virtual-env中使用python 3.4在Django 1.8.4中获得一些帮助。
我在2个不同的应用程序中有2个模型...如下,其中包含多个外键引用。
库存应用
class InventoryItem(models.Model):
item_unique_code = models.CharField(max_length=256, blank=False, null=False)
category = models.CharField(max_length=256, blank=False, null=False,choices=[('RAW','Raw Material'),('FG','Finished Good'),('PKG','Packaging')])
name = models.CharField(max_length=64, blank=False, null=False)
supplier = models.CharField(max_length=96, blank=False,null=False)
approved_by = models.CharField(max_length=64, editable=False)
date_approved = models.DateTimeField(auto_now_add=True, editable=False)
comments = models.TextField(blank=True, null=True)
def __str__(self):
return "%s | %s | %s" % (self.item_unique_code,self.name,self.supplier)
class Meta:
managed = True
unique_together = (('item_unique_code', 'category', 'name', 'supplier'),)
Run Code Online (Sandbox Code Playgroud)
食谱应用
class RecipeControl(models.Model):
#recipe_name choice field needs to be a query set of all records containing "FG-Finished Goods"
recipe_name …Run Code Online (Sandbox Code Playgroud) 当我同时使用 django-admin-tools(0.8.0) 和 django-tables2(1.5) 时,尝试通过 Django(1.10.4) 中的 xhtml2pdf 渲染 PDF 时遇到问题。我已经做了足够的阅读来了解正在发生的事情的基础,但不知道如何解决它。我认为这与 django-admin-tools 自定义加载器有关。
链接到我从 django-tables 获得的异常。
这个问题让我提出了一个问题。
我想做的要点是通过 django-admin 界面中 AdminModel 的下拉框创建一个自定义管理“操作”,将给定的查询集转换为 PDF 文档。
根据 django-tables2文档, render() 函数需要 3 个参数(request, 'template_name.html', {'people': Person.objects.all()})。因此,我向 context_dict 添加了一个查询集,并尝试在下面模板的 for 循环中使用它,但没有骰子。该模板在没有 django-tables2 的情况下将 html 渲染为 pdf 就很好,但是如果我尝试将表格转换为 PDF,我会得到以下内容...
Environment:
Request Method: POST
Request URL: http://127.0.0.1:9999/admin/research/labsample/
Django Version: 1.10.4
Python Version: 3.5.2
Installed Applications:
('admin_tools',
'admin_tools.theming',
'admin_tools.menu',
'admin_tools.dashboard',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django_tables2',
'import_export',
'chemicals',
'suppliers',
'customers', …Run Code Online (Sandbox Code Playgroud) 我按照django-admin-tools 的快速入门指南中的说明进行安装和配置。这些是settings.py线:
# INSTALLED APPS
'admin_tools',
'admin_tools.theming',
'admin_tools.menu',
'admin_tools.dashboard',
'django.contrib.sites',
Run Code Online (Sandbox Code Playgroud)
我还包括admin_tools.template_loaders.Loader到TEMPLATES变量中,如下指南中所述:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'admin_tools.template_loaders.Loader',
],
},
},
]
Run Code Online (Sandbox Code Playgroud)
但是,它仍然引发ImproperlyConfigured如下异常:
django.core.exceptions.ImproperlyConfigured: You must add the "admin_tools.template_loaders.Loader" template loader to your TEMPLATES settings variable
Run Code Online (Sandbox Code Playgroud)
我不明白。