July 24, 2018 · Django

Django 错题本

今天使用Django 实现了爬虫数据在前台的数据展示。在写代码的时候,反复出现了一些错误,在这里记录下来。

由于未设置FloatField和IntegerField的括号导致字段没有在数据库中创建

/polls/models.py

错误代码:

# FloatField 是一个方法,需要有括号,不写在生成迁移文件的时候不会报错,但是也不会在数据库中生成字段
price = models.FloatField

正确代码:

# 除了FloatField之外,IntegerField也是一样的
price = models.FloatField()

在使用VSCode写代码时,提示Class 'xxx' has no 'objects' member

/polls/views.py

# 这一句会报错,告诉你Class 'Xiaoceobject' has no 'objects' member
xiaoce_list = Xiaoceobject.objects.all()

你可以忽略这个错误,你一定是安装了pylint,但是pylint对 Django 的支持不是很好。

在Django中使用 pymysql 时,没有必要在 init.py中写任何代码

以前在搜索的时候说,安装完pymysql后,需要在 __init__.py 中写两行代码。具体写什么我忘记了。
PS:在Ubuntu的系统中的确不用写,但是在MacOS中的确需要这两句代码,否则在本地运行项目的时候会报错。

生成数据迁移文件的三步(主要是migrate这个英文单词记不住)

# 生成数据库的迁移文件
python manage.py makemigrations yourappname
# 使用SQL的方式查看你创建的表格,如果确认没有错误可以执行第三步
python manage.py sqlmigrate polls 0001
# 在数据库中建立新的数据模型
python manage.py migrate

怎样在Django Admin的后台中显示多行数据

一般来讲,在创建model的时候,会创建一个私有的构造函数:

def __str__(self):
    # 我想默认返回的是模型中的标题
    return self.title

把我的应用添加到Django Admin中后,应用界面默认显示 title 一列数据。如果要显示多列数据,可以执行一下操作:

polls/admin.py

class XiaoceAdmin(models.ModelAdmin):
    # 可以使用list_display来调整 Django Admin的显示数据
    list_display=('title','price','username')
admin.site.register(Xiaoceobject, XiaoceAdmin)
  • LinkedIn
  • Tumblr
  • Reddit
  • Google+
  • Pinterest
  • Pocket