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

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

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

models.py文件代码:

 from django.db import models

 # Create your models here.
# 发布会表
class Event(models.Model):
name = models.CharField(max_length=100) # 发布会标题
limit = models.IntegerField() # 参加人数
status = models.BooleanField() # 状态
address = models.CharField(max_length=200) # 地址
start_time = models.DateTimeField('event time') # 发布会时间
create_time = models.DateTimeField(auto_now=True) # 创建时间(自动获取当前时间) def __str__(self):
return self.name # 嘉宾表
class Guest(models.Model):
event = models.ForeignKey('Event','on_delete=models.CASCADE,') # 关联发布会
realname = models.CharField(max_length=64) # 姓名
phone = models.CharField(max_length=16) # 手机号
email = models.EmailField() # 邮箱
sign = models.BooleanField() # 签到状态
create_time = models.DateTimeField(auto_now=True) # 创建时间(自动获取当前时间) class Meta:
unique_together = ("event", "phone") def __str__(self):
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行创建时间的代码没有缩进,执行数据迁移时数据库没有对应字段导致的报错。

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

 # Generated by Django 2.0 on 2018-03-05 13:03

 from django.db import migrations, models

 class Migration(migrations.Migration):

     initial = True

     dependencies = [
] operations = [
migrations.CreateModel(
name='Event',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100)),
('limit', models.IntegerField()),
('status', models.BooleanField()),
('address', models.CharField(max_length=200)),
('start_time', models.DateTimeField(verbose_name='event time')),
('create_time', models.DateTimeField(auto_now=True)),
],
),
migrations.CreateModel(
name='Guest',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('realname', models.CharField(max_length=64)),
('phone', models.CharField(max_length=16)),
('email', models.EmailField(max_length=254)),
('sign', models.BooleanField()),
('event', models.ForeignKey(on_delete='on_delete=models.CASCADE,', to='sign.Event')),
],
),
]

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

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

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

最后的解决方案如下:

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

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

 # Generated by Django 2.0 on 2018-03-05 14:30

 from django.db import migrations, models

 class Migration(migrations.Migration):

     dependencies = [
('sign', '0001_initial'),
] operations = [
migrations.AddField(
model_name='guest',
name='create_time',
field=models.DateTimeField(auto_now=True),
),
]

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

附:django-API文档

PS:收获的教训:

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

(admin.E108) The value of 'list_display[4]'报错解决方案的更多相关文章

  1. RabbitMQ>Erlang machine stopped instantly (distribution name conflict?). The service is not restarted as OnFail is set to ignore.-报错解决方案 原来是NNND。。。

    >Erlang machine stopped instantly (distribution name conflict?). The service is not restarted as ...

  2. Updates were rejected because the remote contains work that you do(git报错解决方案)

    Updates were rejected because the remote contains work that you do(git报错解决方案) 今天向GitHub远程仓库提交本地项目文件时 ...

  3. JMeter 报告监听器导入.jtl结果文件报错解决方案

    JMeter 报告监听器导入.jtl结果文件报错解决方案   by:授客 QQ:1033553122   1. 问题描述 把jmeter压测时生成的 .jtl结果文件导入监听器报告中,弹出如下错误提示 ...

  4. Python3.x:import urllib2报错解决方案

    Python:import urllib2报错解决方案 python2和3有些不一样: python2:输出为print 'hello world' python3:输出为print('hello w ...

  5. php 500报错解决方案

    php 500报错解决方案 1 先看nginx error.log 指定的错误日记文件路径 找到这个日记文件看 里面信息 2 再看 php-fpm.conf 里面指定的PHP错误日记的路径 具体如下& ...

  6. mysql主从复制报错解决方案

    mysql主从复制报错解决方案 我先制造个错误 在slave删除个info3字段 然后在master 在info3插入数据 报错如下<pre> Last_SQL_Errno: 1054 L ...

  7. 转:CentOS上安装LAMP之第三步:MySQL环境及安装过程报错解决方案(纯净系统环境)

    这是AMP运行环境中最后配置的环境: 惯例传送门: 1.编译安装MySQL cd /home/zhangatle/tar tar zxvf mysql-.tar.gz cd mysql- cmake ...

  8. Eclipse开发Android项目报错解决方案详细教程,最新版一篇就够了!

    本文记录刚接触Android开发搭建环境后新建工程各种可能的报错,并亲身经历漫长的解决过程(╥╯^╰╥),寻找各种偏方,避免大家采坑,希望能帮助到大家. 报错信息 出错一:The import and ...

  9. 【笔记】springCloud--Alibaba--nacos介绍----启动报错解决方案

    Nacos介绍 · 欢迎来到 Nacos 的世界! · Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管 ...

随机推荐

  1. Java 去除字符串中的空白字符

    通过String的trim()方法只能去掉字符串两端的空格字符,但是对于\t \n等其它空白字符确不能去掉,因此需通过正则表达式,将其中匹配到的空白字符去掉,代码如下: protected Strin ...

  2. 【代码笔记】Web-JavaScript-JavaScript表单验证

    一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  3. Caused by: Java.lang.NoSuchMethodError: javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/ForeignKey;

    Caused by: Java.lang.NoSuchMethodError: javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/ ...

  4. Android 布局巧用之include、merge、ViewStub

    原文链接:https://mp.weixin.qq.com/s/bTA2gztUzqvqER2rz56RRQ 相信大家经常听到include.merge.ViewStub这样的标签,官方也提到这三种布 ...

  5. JMeter 报告监听器导入.jtl结果文件报错解决方案

    JMeter 报告监听器导入.jtl结果文件报错解决方案   by:授客 QQ:1033553122   1. 问题描述 把jmeter压测时生成的 .jtl结果文件导入监听器报告中,弹出如下错误提示 ...

  6. Ubuntu快捷键、Ubuntu终端常用命令

    Ubuntu快捷键 0.Ctrl + Alt + t 打开终端,在终端命令行操作 1. Ctrl + W: 关闭当前 Nautilus 窗口 2. Ctrl+T: 在 Nautilus 打开新的 Ta ...

  7. js实现获取当前时间是本月第几周和年的第几周的方法

    js实现获取当前时间是本月第几周和年的第几周的方法 获取本月第几周的方法: var getMonthWeek = function (a, b, c) { /** * a = d = 当前日期 * b ...

  8. centos7安装配置redis

    1.下载redis > cd /usr/local/src #文件下载目录 > curl -O http://download.redis.io/releases/redis-3.2.8. ...

  9. js时间戳转化时间格式

    // 判断是否前面补0 add0 (m) { return m < 10 ? '0' + m : m }, // 时间转化 timeFormat (timestamp) { // timesta ...

  10. 解决Unable to load native-hadoop library for your platform

    使用hadoop fs相应命令时候总是出现 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your plat ...