python - 根据另一个字段更改 Django 数组字段大小
问题描述
我正在构建一个显示不同课程的应用程序。对于每门课程,都有一个它所拥有的不同课程的列表。有些课程有两节课,有些有八节课,有些只有一节课,或者将来有些课程可能有 10 节课。注册新课程时由应用程序管理员决定
class Curso(models.Model):
clases = models.IntegerField(default=1)
content = ArrayField(models.CharField(max_length=30),blank=False)
此模型仅供管理员使用。
我想将不同的类(只是它们的名称)存储在一个数组中。但是,如果管理员只是要填写一个字段,则不需要显示 8 个以上的字段......或者这是正确的方法吗?
我希望管理员有一个整数字段,她可以在其中键入课程有多少个课程,并取决于将显示的数组字段。
我知道ArrayField
有一个 size 属性,我可以在其中说出数组的长度。正确的?所以我的问题是:
有没有办法根据管理员在“clases”字段中输入的内容来动态更改数组大小?
我需要这个在管理应用程序中工作。我是 Django 新手,我发现管理应用程序有点难以操作。
解决方案
模型.py
from django.db import models
from django_better_admin_arrayfield.models.fields import ArrayField
# Create your models here.
class Course(models.Model):
...
clases = ArrayField(models.CharField(max_length=10),null=True,blank=True, size=8)
...
原来我只需要将ArrayField与django-better-admin-arrayfield 一起使用 它并没有完全按照我在这个问题中描述的那样工作,但是在管理页面中可视化编辑 arrayfield 的效果一样好(甚至更好)
这是存储库django-better-admin-arrayfield
您只需要 pip 安装它,然后将其添加到您的 settings.py 安装的应用程序中
INSTALLED_APPS = [
...
'django_better_admin_arrayfield',
...
在admin.py
from django.contrib import admin
from .models import Course
from django_better_admin_arrayfield.admin.mixins import DynamicArrayMixin
@admin.register(Course)
class CursoAdmin(admin.ModelAdmin, DynamicArrayMixin):
...
就是这样!makemigrations 和 migrate 和...它没有工作。问题是添加另一个按钮不起作用。所以我阅读了回购中的问题,有人写道你应该运行 collectstatic 并且它有效!
向@nbeuchat 大喊,不管是谁,在这个stackoverflow 帖子中的回答是唯一能帮助我摆脱这个问题的东西
推荐阅读
- python - How to change Python version used by Bokeh?
- sql - SQL 查询连接无关表
- css - 是否可以订购复杂的 CSS 网格系统的项目?
- java - Run As JUnit - ClassNotFoundException - BuildCommand 修复导致类解析问题
- javascript - ag-grid getColumnState 从不返回组
- python - error uninstalling django-tables2
- javascript - 无法让 Firebase 数据显示在简单的 Vue 应用程序上
- powershell - 用于在 IIS 10 上设置日志记录的 PowerShell 命令
- python - 如何使用您已通过函数操作的数据框(python)
- python - 在 Django 中添加属性多对多关系