Django:创建用户模型报错: (admin.E108) The value of 'list_display[4]'解决方案

参考资料:虫师-《web接口开发与自动化测试:基于python语言》

日常学习Django框架中,创建了用户模型,但是页面功能验证时候,提示不能进行列表字段操作,debug好久,才找到问题原因,心累。。。

下面是大概过程和解决方案。。。

models.py文件代码:

 1 from django.db import models
 2
 3 # Create your models here.
 4 # 发布会表
 5 class Event(models.Model):
 6     name = models.CharField(max_length=100)              # 发布会标题
 7     limit = models.IntegerField()                        # 参加人数
 8     status = models.BooleanField()                       # 状态
 9     address = models.CharField(max_length=200)           # 地址
10     start_time = models.DateTimeField(‘event time‘)      # 发布会时间
11     create_time = models.DateTimeField(auto_now=True)    # 创建时间(自动获取当前时间)
12
13     def __str__(self):
14         return self.name
15
16 # 嘉宾表
17 class Guest(models.Model):
18     event = models.ForeignKey(‘Event‘,‘on_delete=models.CASCADE,‘)   # 关联发布会
19     realname = models.CharField(max_length=64)                       # 姓名
20     phone = models.CharField(max_length=16)                          # 手机号
21     email = models.EmailField()                                      # 邮箱
22     sign = models.BooleanField()                                     # 签到状态
23 create_time = models.DateTimeField(auto_now=True)                # 创建时间(自动获取当前时间)
24
25 class Meta:
26     unique_together = ("event", "phone")
27
28 def __str__(self):
29     return self.realname

代码解析:

①、创建发布会表(Event类)和嘉宾表(Guest类);

②、两个表中默认生成自增ID,但不需要声明;

③、嘉宾表中中通过event字段(字段名event_id)关联发布会ID,ForeignKey()用来创建外键;

④、用发布会ID和手机号作为联合主键,Meta是Django模型类的一个内部类,用于定义行为特性,unique_together用于设置两个字段为联合主键(event和phone);

命令行执行数据迁移操作:

然后在进入后台管理界面,选择Guests,点击添加,然后保存;

神奇的事情来了,提示如下:

ERRORS:

<class ‘sign.admin.GuestAdmin‘>: (admin.E108) The value of ‘list_display[4]‘

检查了很多次代码,在Stack Overflow也找到了类似的问题,最后从头检查代码,才发现是models文件第23行创建时间的代码没有缩进,执行数据迁移时数据库没有对应字段导致的报错。

对应的数据迁移文件代码如下

 1 # Generated by Django 2.0 on 2018-03-05 13:03
 2
 3 from django.db import migrations, models
 4
 5
 6 class Migration(migrations.Migration):
 7
 8     initial = True
 9
10     dependencies = [
11     ]
12
13     operations = [
14         migrations.CreateModel(
15             name=‘Event‘,
16             fields=[
17                 (‘id‘, models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name=‘ID‘)),
18                 (‘name‘, models.CharField(max_length=100)),
19                 (‘limit‘, models.IntegerField()),
20                 (‘status‘, models.BooleanField()),
21                 (‘address‘, models.CharField(max_length=200)),
22                 (‘start_time‘, models.DateTimeField(verbose_name=‘event time‘)),
23                 (‘create_time‘, models.DateTimeField(auto_now=True)),
24             ],
25         ),
26         migrations.CreateModel(
27             name=‘Guest‘,
28             fields=[
29                 (‘id‘, models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name=‘ID‘)),
30                 (‘realname‘, models.CharField(max_length=64)),
31                 (‘phone‘, models.CharField(max_length=16)),
32                 (‘email‘, models.EmailField(max_length=254)),
33                 (‘sign‘, models.BooleanField()),
34                 (‘event‘, models.ForeignKey(on_delete=‘on_delete=models.CASCADE,‘, to=‘sign.Event‘)),
35             ],
36         ),
37     ]

问题的原因是啥捏,我是照着书里面的代码撸的,写的时候也没注意到有一行代码没有缩进,然后导致了没有对应字段,然后保存报错!!!

只想说,对python这种语言来说,缩进格式真的很重要!!!

还有,之前看虫师的selenium自动化那本书的时候,就有很多代码有编写错误,这次又遇到了,不知道说啥了,心好累。。。

最后的解决方案如下:

修改models文件,缩进保持一致,然后重新执行数据迁移操作,由于上次建表少create_time字段,这次执行数据迁移,只是执行了一个更新操作,并未对已有的表字段进行修改。

Django里面,这种操作不是覆盖式的,而是通过新增来解决,对应的迁移文件如下:

 1 # Generated by Django 2.0 on 2018-03-05 14:30
 2
 3 from django.db import migrations, models
 4
 5
 6 class Migration(migrations.Migration):
 7
 8     dependencies = [
 9         (‘sign‘, ‘0001_initial‘),
10     ]
11
12     operations = [
13         migrations.AddField(
14             model_name=‘guest‘,
15             name=‘create_time‘,
16             field=models.DateTimeField(auto_now=True),
17         ),
18     ]

最后,重启服务,在界面进行功能验证,发布会下新增宾客,就可以成功保存了。。。

PS:收获的教训:

学习过程中,犯错并不可怕,前人的代码,不一定在你的环境完全可编译执行,遇到问题,耐心排查,每次解决问题的过程,就是提高的过程!

Django:创建用户模型报错: (admin.E108) The value of 'list_display[4]'解决方案

原文地址:https://www.cnblogs.com/imyalost/p/8512009.html

时间: 2024-10-09 23:02:26

Django:创建用户模型报错: (admin.E108) The value of 'list_display[4]'解决方案的相关文章

django 创建QueryDict类型报错

报错信息:django.core.exceptions.ImproperlyConfigured: Requested setting LOGGING_CONFIG, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings. 解决办法:

Django 重写用户模型

目录 Django 重写用户模型 修改配置文件,覆盖默认的User模型 引用User模型 指定自定义的用户模型 Django 期望你自定义的 User model 满足一些最低要求: 下面为一些AbstractBaseUser的子类必须定义的关键的字段和方法: 下面为一些AbstractBaseUser的子类可以使用的方法: 为你的User模型自定义一个管理器 扩展Django默认的User 自定义用户与内置身份验证表单 自定义用户和django.contrib.admin 自定义用户和权限 如

创建maven项目报错

我在自己的电脑上装了一个MyEclipse6.5 和spring tools suit 3.5.1  因为sts自带了maven插件,所以只要在 preference里面配置下maven的本地路径和settings文件的本地路径就可以了, 配置完了之后 我在MyEclipse和sts里面都导入了maven项目 都可以运行,我就觉得maven配置好了,但是我在sts里面创建maven项目的时候报错 Could not calculate build plan: Plugin org.apache.

opennebula kvm 创建VM oned报错日志

Thu Jul 17 10:45:36 2014 [ReM][D]: Req:4720 UID:0 VirtualMachineDeploy result SUCCESS, 12 Thu Jul 17 10:45:40 2014 [TM][D]: Message received: LOG I 12 Command execution fail: /app/opennebula/var/remotes/tm/shared/clone localhost.localdomain:/app/open

Pychrm运行django过程中,报错 &quot;GET /c_hello?asker=backuper HTTP/1.1&quot; 404的原因

Pychrm运行django过程中,报错 "GET /c_hello?asker=backuper HTTP/1.1" 404,原因是django服务的启动端口被其他进程占用了, 1.在windows下cmd运行netstat -ano | find "8000"查找占用改端口的进程pid 2.查看下该pid是什么进程,tasklist | find "PID"决定是否杀掉 3.运行taskkill /PID pid -t -f杀掉进程 重新启动

IDEA创建maven项目报错解决:Failed to create a Maven project: &#39;C:/Users/../IdeaProjects/../pom.xml&#39; already e

晚上用IDEA创建Java的maven项目时报错了: Failed to create a Maven project: 'C:/Users/../IdeaProjects/../pom.xml' already exists in VFS1这个错误是因为之前我已经在这个文件夹里创建过同名的maven项目. 解决方法如下: 先把这个项目删了,然后把回收站中的这个项目和之前同名的项目一起彻底删除,重新创建一遍就不会报错了 IDEA创建maven项目报错解决:Failed to create a M

Android Studio 报错Guest isn&#39;t online after 7 seconds 解决方案

 最近使用真机模拟之后,再使用虚拟机就频繁出现这个问题; 解决步骤如下: 1.打开Android虚拟设备管理器, 2.查看Actoins栏下拉图标, 3.选择冷启动模式即可, 4.重启AVD正常; Android Studio 报错Guest isn't online after 7 seconds 解决方案 原文地址:https://www.cnblogs.com/jpfss/p/9871375.html

18_django的用户模型和扩展django的用户模型

目录 User 模型 字段: User模型的基本用法 User 模型 User模型是这个框架的核心部分.他的完整的路径是在django.contrib.auth.models.User.以下对这个User模型做一个简单的了解: 字段: 内置的User模型拥有以下的字段: 1. username: 用户名.150个字符以内.可以包含数字和英文字符,以及_/@/+/.和-字符.不能为空,且必须唯一. 2. email: 邮箱. 可以为空. 3. password: 密码.经过哈希过后的密码. 4.

Django 项目celery beat报错:Pidfile already exists

背景 Django项目运行celery定时任务celery beat时,报错如下: 排查 经过排查,发现celerybeat运行时,会自动创建一个pidfile文件,默认为celerybeat.pid,存放在项目根目录下: 正常情况下:celerybeat停止运行时,celerybeat.pid文件会自动生成,下次运行时再自动创建. 上述问题出现的原因就是celerybeat时非正常停止运行,导致了celerybeat.pid文件没有自动删除,以至于再次运行时报错. 解决办法 手动删除celer