根据其他字段更改Django数组字段大小

2024-06-16 09:46:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在构建一个显示不同课程的应用程序。每门课程都有一个不同课程的列表。 有些课程有两节课,有些有八节课,有些只有一节课,或者将来有些课程可能有10节课。注册新课程时,由应用程序管理员决定

class Curso(models.Model):
    clases = models.IntegerField(default=1)
    content = ArrayField(models.CharField(max_length=30),blank=False)

此模型仅适用于管理员

我想将不同的类(只是它们的名称)存储在一个数组中。但是如果管理员只需要填写一个字段,就不需要显示8+个字段。。。还是这是正确的方法

我希望管理员有一个整数字段,她在其中键入课程有多少类,并取决于数组字段将显示

我知道ArrayField有一个size属性,我可以在其中说出数组的长度。正当所以我的问题是:

有没有办法根据管理员在“类别”字段中键入的内容动态更改数组大小

我需要这个工作在管理应用程序。我是Django的新手,我发现管理应用程序有点难以操作


Tags: 应用程序列表model键入models管理员数组管理应用程序
1条回答
网友
1楼 · 发布于 2024-06-16 09:46:27

我做了研究。结果是这样的: enter image description here

型号.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)
    ...

事实证明,我只需要使用ArrayFielddjango better admin ArrayField 它并不完全像我在这个问题中描述的那样,但是在管理页面中直观地编辑arrayfield同样有效(甚至更好)

这是存储库django-better-admin-arrayfield

您只需pip安装,然后将其添加到您的设置中。py安装的应用程序

INSTALLED_APPS = [
  ...
   'django_better_admin_arrayfield',
  ...

管理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):
    ...

就这样!进行迁移和迁移,然后。。。它不起作用。问题是添加另一个按钮不起作用。所以我读了回购协议中的issues,有人写道你应该运行collectstatic,它成功了

对@nbeuchat大声说,不管他是谁,在thisstackoverflow post中谁的答案是唯一帮助我摆脱这个问题的东西

相关问题 更多 >