问题就在这里。我在我的 django 博客中添加了一个类别部分。当我尝试添加新类别时,用户本地化存在问题。当我添加类别时,例如django,它显示如下: image 1
在管理面板中相同: 图像2
但我实际上添加了一个正常的类别名称: 图片 3
有趣的是,当我category在网络应用程序中发布内容后,它看起来很正常:
图 4
我想要这样的东西,也许有人有解决方案:想要的结果
一些代码:
模型.py
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
from django.urls import reverse
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
categories = models.ManyToManyField('Category', related_name='posts')
image = models.ImageField(upload_to='images', default="images/None/no-img.jpg")
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('post-detail', kwargs={'pk': self.pk})
class Category(models.Model):
name = models.CharField(max_length=20)
Run Code Online (Sandbox Code Playgroud)
视图.py
from django.shortcuts import render, …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的 django 应用程序中创建自定义用户模型。但是每当我尝试这样做时,我都无法使用管理面板中的“超级用户”创建的“工作人员用户”登录。它说:
“请输入员工帐户的正确用户名和密码。请注意,这两个字段都可能区分大小写。”
应用名称:后台
后端/models.py
from django.db import models
from django.contrib.auth.models import (
AbstractBaseUser,
BaseUserManager
)
# Create your models here.
class UserManager(BaseUserManager):
def create_user(
self,
username = None,
email = None,
password = None,
is_active = True,
is_staff = False,
is_admin = False
):
if not username:
raise ValueError("Users must have a username")
if not password:
raise ValueError("Users must have a password")
if not email:
raise ValueError("Users must have a email")
user_obj = self.model(
username = username …Run Code Online (Sandbox Code Playgroud) python django django-models django-admin django-authentication
我正在使用 StackedInline 在 Django 管理表单中添加相关对象(关系是一对多)。问题是,在创建新对象时,它默认呈现三个空的内联表单,如下例所示:
我想要的是仅渲染“添加”按钮,因为相关对象非常罕见,以至于大多数记录都没有这些(或至少单个空记录),并且我的相关对象比图片上的对象大得多。它应该类似于这个例子:
我怎样才能做到这一点?
您好,我总是收到 127.0.0.1 拒绝连接的消息。当我尝试在 django admin 中使用 + 在现有模型中添加新的 fk 时,弹出窗口出错。我正在使用“admin_interface”,以及一些与已安装应用程序中列出的 django-admin 主题相关的其他软件包,这就是我收到此错误的原因。
我尝试在setting.py中的ALLOWED_HOSTS中传递“*”,
当我在 google chrome 浏览器中尝试该过程时,它显示为我在图像 1 中共享的内容,但是当我尝试对 firefox 执行相同操作时,它在第二张图像中共享。
我的setting.py文件
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
SECRET_KEY = ''
DEBUG = True
ALLOWED_HOSTS = ['*']
INSTALLED_APPS = [
# 'grappelli',
"admin_interface",
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'mdeditor',
"colorfield",
'drf_yasg',
"rest_framework",
'django_filters',
"corsheaders",
"storages",
'rest_framework_swagger',
'authentication',
'mails',
'authors',
'book_store',
'institude_home_page',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'vani_prakashan.urls'
TEMPLATES = [
{ …Run Code Online (Sandbox Code Playgroud) 现在我已经应用了这段代码
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
class MyUserAdmin(UserAdmin):
def get_fieldsets(self,request,obj=None):
if not obj:
return self.add_fieldsets
if request.user.is_superuser:
perm_fields = ('is_active','is_staff','is_superuser','groups','user_permissions')
return [(None, {'fields': ('email', 'password')}),
('Personal info', {'fields': ('first_name', 'last_name')}),
('Permissions', {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}),
('Important dates', {'fields': ('last_login', 'date_joined')}),
('Contact info', {'fields': ('contact_no',)})]
else:
perm_fields = ('is_active','is_staff')
return [(('Creds'),{'fields':('username','password')}),
(('Personal info'),{'fields':('first_name','last_name','email')})]
admin.site.unregister(User)
admin.site.register(User,MyUserAdmin)
Run Code Online (Sandbox Code Playgroud)
但我希望员工用户看不到任何超级用户。因此在这种情况下,staffuser 只能查看 1 个“新”用户和“admin”用户(超级用户),应隐藏
我怎样才能做到这一点 ?
我想要一个ConfirmationField字段类型.我希望这个字段像布尔字段一样工作.我不需要将此信息存储在数据库中,而是希望将确认日期存储在单独的字段中.
class MyModel(models.Model):
confirmation = ConfirmationField()
m = MyModel()
m.confirmation # False
m.confirmation_timestamp # None
m.confirmation = True
m.save()
m.confirmation_timestamp # datetime object
m.confirmation = False
m.save()
m.confirmation_timestamp # None again
Run Code Online (Sandbox Code Playgroud)
我需要将两个字段都作为Field实例,我需要能够在Admin中使用它们.
我已阅读文档并检查代码,ForeignKey使用以下代码更改其数据库列名称:
def get_attname(self):
return '%s_id' % self.name
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何使用其余代码作为示例.看来我的目标并不需要太多的复杂性.
ImageField保存模型时,我还发现了保存的额外信息:
if self.field.width_field:
setattr(self.instance, self.field.width_field, self.width)
if self.field.height_field:
setattr(self.instance, self.field.height_field, self.height)
Run Code Online (Sandbox Code Playgroud)
但是我当然不希望confirmation自己存储在数据库中.因为(confirmation_timestamp- > confirmation)None== False和<datetime instance>==,我会造成冗余True.
任何指针/想法都表示赞赏.
谢谢.
编辑:目前看来这是不可能的.我最终改变了我的API.这是一个snipplet,让我知道我是如何做到的:
value …Run Code Online (Sandbox Code Playgroud) 我想让登录和注册的用户创建他将成为管理员的额外用户帐户.这些帐户将是与创建它们的用户绑定的特殊"下级"帐户.他应该能够添加/修改/删除这些帐户,就像Google应用程序管理员如何管理公司帐户一样(您是普通用户,但也创建/销毁其他用户.)
下级帐户无法创建/修改/删除帐户(除了更改自己的密码和正常的用户行为.)我正在为所有这些帐户使用django auth模型.在不使用任何管理代码的情况下,从我自己定制的网页中访问auth方法添加/修改/删除帐户的好方法是什么?
我有一个名为Foo的模型:
class Foo(models.Model):
name = models.CharField()
entry = models.DateField()
Run Code Online (Sandbox Code Playgroud)
我有两种类型的用户可以登录管理面板,常规和超级用户.我想禁止编辑/删除超过2天的Foo条目(通过使用输入日期字段),但超级用户可以不受任何限制地进行编辑.我怎样才能做到这一点?谢谢
默认情况下,管理模型按应用进行分组,应用名称位于标题中(帐户,身份验证等).如何在不编写管理模板的情况下覆盖标题中的名称?