在所有 Django 管理页面上加载 jQuery 的最佳方式是什么?我想从 Google CDN 加载它,目前我必须记住将它单独加载到我的所有管理页面上。
我已经按照docs中的说明在 django 1.5 上安装了 django-ckeditor 。我已将应用程序 models.py 中的 TextField 更改为 RichTextField,如文档中所述。但是我仍然在 Django 管理中看到空白文本区域,而不是 ckeditor。 这个问题是三年前提出的,但没有一个答案对我有用。当我获取该页面时,ckeditor.js 加载得很好。有什么建议么?我的应用程序名称是新闻源。
模型.py:
from cms.models.pluginmodel import CMSPlugin
from cms.models import Page
from django.db import models
from time import time
from ckeditor.fields import RichTextField
def get_upload_file_name(instance, filename):
return "uploaded_files/%s_%s" % (str(time()).replace('.','_'),filename)
# Create your models here.
class NewsFeed (models.Model):
title = models.CharField(('Feed Name'),max_length=200,help_text=('Feed name is visible only in edit mode'))
publisher = models.CharField(('Publisher'),max_length=200)
def __unicode__(self):
return self.title
def get_absolute_url(self):
return "/newsfeed/get/%i" % self.id
class …Run Code Online (Sandbox Code Playgroud) 我有一个使用自定义管理器的模型:
class ProjectManager(models.Manager):
def get_queryset(self):
return super(ProjectManager, self).get_queryset() \
.exclude(archived_date__isnull=False)
class Project(models.Model):
objects = ProjectManager()
archived_date = models.DateTimeField(null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)
但我还没有找到一种方法来显示管理中的所有项目。
我的管理员定义如下:
class ProjectAdmin(admin.ModelAdmin):
model = Project
Run Code Online (Sandbox Code Playgroud)
get_queryset我尝试在课堂上使用ProjectAdmin,但我无法找到恢复所有项目的方法。
你知道怎么做吗?
我有以下内容:
class User(models.Model)
blablabla
class Product(models.Model)
authorized_users = models.ManyToManyField(
User,
related_name='shared_products',
)
Run Code Online (Sandbox Code Playgroud)
我已经将 的 管理员配置为Product显示authorized_users为水平过滤器,以便选择可以编辑产品的所有用户。
class ProductAdmin(admin.ModelAdmin):
filter_horizontal = (
'authorized_users',
)
admin.site.register(Product, ProductAdmin)
Run Code Online (Sandbox Code Playgroud)
问题是我想在 的 管理中执行相同的操作User,这意味着我想要 的 水平过滤器shared_products,以便选择该用户能够编辑的产品。我已经尝试过以下显然不起作用的方法:
class UserAdmin(admin.ModelAdmin):
filter_horizontal = (
'authorized_users',
)
admin.site.register(User, UserAdmin)
Run Code Online (Sandbox Code Playgroud)
我发现的其他答案推荐使用内联,但正如我所见,它们用于编辑另一端的模型实例,这不是我想要做的。
有人知道如何实现这一目标吗?
如何使用tag在django 管理面板中进行搜索?
它将使用称为django-taggit包的标签进行搜索。
管理员.py
@staticmethod
def get_tags(obj):
tags = []
for tag in obj.tags.all():
tags.append(str(tag))
return ', '.join(tags)
list_display = (
'id'
'portions',
'get_tags',
'created'
)
search_fields = ('name', get_tags, 'created', 'id')`
Run Code Online (Sandbox Code Playgroud)
模型.py
from taggit.managers import TaggableManager
tags = TaggableManager(through=TaggedOffer, blank=True)
name = models.CharField(max_length=255)
price = models.DecimalField(
null=True,
max_digits=10,
decimal_places=2,
validators=[positive_decimal]
)
Run Code Online (Sandbox Code Playgroud)
错误
异常类型:FieldError 异常值:
无法将关键字“get_tags”解析为字段。
想象一下,你有一个Person可以有 N 个Book实例的模型。
我想在 django 管理更改列表视图中显示一个人拥有的书籍数量。
显示数字很容易(在 PersonAdmin 上编写自定义方法)。
但是我找不到一种方法可以根据一个人拥有的书籍数量对其进行排序。
我阅读了list_display的文档,但找不到答案。
根据文档,可以使用查询表达式。有没有可能以这种方式解决它?
应用答案后,这就是它的样子。在这种情况下,每个实例都有 N 个日志条目:
我使用下面的模型,其中默认的 django 用户表与 Hotel 具有多对多关系。
在 django 管理面板中将多个用户分配给酒店很困难,我想将默认的“ctrl-click”方法替换为复选框,在该复选框中我可以选择多个用户而无需按住 ctrl。
模型:
from django.db import models
from django.contrib.auth.models import User
class Hotel(models.Model):
# associate the user
user = models.ManyToManyField(User)
# additional fields
hotel_name = models.CharField(max_length=100)
hotel_id = models.CharField(max_length=100)
def __str__(self):
return self.hotel_id
Run Code Online (Sandbox Code Playgroud)
管理员.py
from django.contrib import admin
from .models import *
from django.forms import CheckboxSelectMultiple
# Checkbox for many-to-many fields
class HotelAdmin(admin.ModelAdmin):
formfield_overrides = {
models.ManyToManyField: {'widget': CheckboxSelectMultiple},
}
admin.site.register(Hotel)
Run Code Online (Sandbox Code Playgroud)
我想禁用特定模型实例的删除
我重写delete_model如下ModelAdmin:
def delete_model(self, request, client):
if client.schema_name == 'public':
messages.set_level(request, messages.ERROR)
messages.error(request, 'Suppression interdite pour la racine')
else:
super().delete_model(request, client)
Run Code Online (Sandbox Code Playgroud)
当我单击更改视图上的删除按钮时它起作用
但不能使用批量删除,因为实例被删除而不会阻止
我怎样才能解决这个问题 ?我还意识到这delete_model不是通过批量删除来调用的,这有点奇怪。
我的 Django 应用程序遇到了非常烦人的问题。它已经部署到 Ubuntu Server,当我尝试访问任何名为“Detail”的模型对象时,它不会加载页面。当尝试通过 Django Admin 创建“Detail”对象时,也会发生同样的事情,只是无限下载。其他模型不会发生这种情况,尽管它们具有相同数量的对象(大约 181000 个)。在我将应用程序部署到服务器之前,它也发生在我的本地计算机上,因此问题不在于服务器。我想发生这种情况是因为数据库表中的对象数量较多,但必须有某种方法来解决这个问题,所以我希望有人可以帮助我解决这个问题。
我向 CORS_ALLOWED_ORIGINS 和 CSRF_TRUSTED_ORIGINS 以及 ALLOWED_HOSTS 添加了域的多个变体。我添加django.template.context_processors.csrf到 context_processors 中。我没有将 CSRF_COOKIE_SECURE 和 SESSION_COOKIE_SECURE 设置为 true (我希望我可以更改)。我想不出还有什么可以让它在 Django admin 上工作,并且在我设置会话身份验证(包括配置 csrf 和会话 cookie)后它才停止工作。当我没有对前端进行任何身份验证时,Django 登录工作正常,甚至像我说的那样,它在本地主机上工作正常。
我真的很感激任何有关我可以尝试解决此问题的其他建议。
更新:现在我收到此错误消息 Referer checking failed - https://myapp.herokuapp.com/admin/login/?next=/admin/ does not match any trusted origins.
我认为问题可能在于它是一个 heroku 子域,所以我添加了一个域和一个 SSL 证书。新域出现完全相同的错误。
我的 CORS_ALLOWED_ORIGINS 包括https://myapp.herokuapp.comandhttps://www.example.com和,因为斜杠不断从浏览器复制,https://www.example.com/. 即使有 SSL 证书,我也包含了每个地址的 http:// 版本。
django ×10
django-admin ×10
python ×4
many-to-many ×2
csrf ×1
django-csrf ×1
jquery ×1
model ×1
postgresql ×1
tags ×1