我有一个针对 postgresql 数据库表的 Django 模型,我希望 Django 在对象创建期间不要插入 field_3 作为 DB 应该填写的时间戳字段。
class AbcModel:
model_id = models.AutoField(primary_key=True)
field_1 = models.BigIntegerField()
field_2 = models.TextField()
field_3 = models.DateTimeField(blank=True, null=True)
class Meta:
managed = False
db_table = 'abc_table'
Run Code Online (Sandbox Code Playgroud)
对应的表模式
abc_table
我试过的 - 我读到应该调用 Model.save(update_fields=[list of fields to be updated])。
class AbcModel(models.Model):
def save(self, *args, **kwargs):
u_fields = ['field_1', 'field_2']
super(CommandRunning, self).save(update_fields=u_fields)
Run Code Online (Sandbox Code Playgroud)
但我得到一个例外
Cannot force an update in save() with no primary key.
Run Code Online (Sandbox Code Playgroud)
如果我在 update_fields …
我想在 django admin 中管理对象,但我希望只能编辑具有某些属性特定值的对象。确切地说,我现在在 admin.py 中有:
class UnitAdmin(admin.ModelAdmin):
list_display = ('type', 'name', 'result_file')
list_filter = ['type']
admin.site.register(Unit, UnitAdmin)
Run Code Online (Sandbox Code Playgroud)
而且我只想管理带有type='SomeSpecificType'. 我看到了一些覆盖 SimpleListFilter 类的东西,但我看不出这在这里是如何应用的。
通过管理界面编辑用户模型时,我看到的是:
这就是我希望看到的:
第二个允许我修改用户权限,第一个不允许。
我在第一个屏幕截图上使用的 User 模型继承自AbstractUser并按以下方式注册:
from django.contrib import admin
import accounts.models
admin.site.register(accounts.models.User)
Run Code Online (Sandbox Code Playgroud)
在我的设置中:
DEBUG = True
AUTH_USER_MODEL = 'accounts.User'
Run Code Online (Sandbox Code Playgroud)
可能是什么问题?如何从第一个屏幕截图到第二个屏幕截图?
我正在将 Django 用于应用程序,并想知道管理中的一个选项。如果列表视图中只存在一个对象,django 管理员是否可以重定向到对象的详细信息页面?
立即重定向到此对象的更改视图,而无需用户单击该对象。
我没有使用任何自定义视图。经过 2 个小时的搜索,我找不到任何解决方案。
谢谢!
嗨,我创建了一个通用表单来插入数据,一切正常,但图像无法以模板形式上传,但是当我在管理中上传图像时,它可以完美运行,并且图像显示在模板页面上。
这是我的代码:
视图.py:
class ArticleCreate(CreateView):
model = article
fields = ['title', 'cat', 'img', 'disc', 'tags']
Run Code Online (Sandbox Code Playgroud)
模型.py:
class article(models.Model):
title = models.CharField(max_length=250)
disc = models.TextField(verbose_name="Discription")
cat = models.ForeignKey(category, verbose_name="Category")
tags = models.ManyToManyField(Tag, blank=True)
img = models.ImageField(blank=True, verbose_name='Image')
Run Code Online (Sandbox Code Playgroud)
设置.py:
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
Run Code Online (Sandbox Code Playgroud)
模板页面:
{% for list in data %}
{{ list.title }}
{% if list.img %}
{{ list.img.url }}
{% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能上传带有通用格式的图像?
我想更改用于默认 LogEntry 类的模型,以便它在数据库中为属性“object_id”创建一个 varchar 而不是一个 clob
原始模型定义在
django/contrib/admin/models.py
class LogEntry(models.Model):
action_time = models.DateTimeField(_('action time'), auto_now=True)
user = models.ForeignKey(settings.AUTH_USER_MODEL)
content_type = models.ForeignKey(ContentType, blank=True, null=True)
object_id = models.TextField(_('object id'), blank=True, null=True)
object_repr = models.CharField(_('object repr'), max_length=200)
action_flag = models.PositiveSmallIntegerField(_('action flag'))
change_message = models.TextField(_('change message'), blank=True)
Run Code Online (Sandbox Code Playgroud)
我想将 object_id 的定义更改为
object_id = models.Charfield(_('object id'), max_length=1000, blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
我知道,如果有人在大于 varchar(1000) 的实体上定义主键,这可能会导致问题,但我不希望实体的 PK 定义为这样,因此我对限制感到满意.
这将大大提高访问历史日志时的查询效率。
我真的不想破解实际的模型定义,但我无法找到如何优雅地覆盖模型定义。
有任何想法吗?
我尝试使用AbstractUser扩展我项目中的默认 Django 用户 。在 Django 管理员中,我看不到选择的用户权限。
这是我的作品
from django.db import models
from django.contrib.auth.models import AbstractUser
class ExtendedUser(AbstractUser):
bio = models.TextField(max_length=500, blank=True)
birth_date = models.DateField(null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)
之后我在admin.py添加我的扩展用户
class ExtendedUserAdmin(admin.ModelAdmin):
pass
admin.site.register(ExtendedUser, ExtendedUserAdmin)
Run Code Online (Sandbox Code Playgroud)
还要在settings.py 中添加 AUTH_USER_MODEL
AUTH_USER_MODEL = '_aaron_user.ExtendedUser'
Run Code Online (Sandbox Code Playgroud) 在 Django 内置管理站点中,如何在“更改列表”页面和“更改表单”页面中将进度条显示为字段?
假设我有一个像这样的 Django 模型。
class Car(models.Model):
speed = models.IntegerField()
color = models.CharField(max_length=120)
Run Code Online (Sandbox Code Playgroud)
我通过管理员在管理员中注册了它
admin.site.register(Car)
Run Code Online (Sandbox Code Playgroud)
我想为管理站点对象视图添加自定义 JS 按钮,它将警告汽车模型实例的颜色值。所以当我按下它时,我会得到类似“ID 为13的汽车是红色的”这样的信息
如何通过 JavaScript 获取对象的 id 和颜色字段的值?
我正在尝试使用 Django REST 框架从我的 Django 管理员(该项目是一个休息 API)创建一个用户。
管理文件
class UserFrame(UserAdmin):
list_display = ["name", "email", "date_of_creation", "is_active"]
list_editable = ["is_active"]
admin.site.register(models.AccountProfile, UserFrame)
Run Code Online (Sandbox Code Playgroud)
我得到的错误: 为 AccountProfile 指定的未知字段 (s) (date_joined, last_name, first_name)
AccountProfile 是我的自定义用户模型,它继承自 AbstractBaseUser 并有一个 BaseUserManager。
django-admin ×10
django ×8
python ×7
python-3.x ×2
django-1.9 ×1
forms ×1
generics ×1
html ×1
javascript ×1
postgresql ×1
reactjs ×1