【问题标题】:Creating Django´s blog Post custom fields创建 Django 的博客发布自定义字段
【发布时间】:2019-10-23 23:04:54
【问题描述】:

我是 django 新手,我正在尝试将自定义字段添加到常规 django 博客帖子应用程序中。

这是开箱即用的博客字段:

models.py

from django.db import models
from django.contrib.auth.models import User


STATUS = (
    (0,"Draft"),
    (1,"Publish")
)

class Post(models.Model):
    title = models.CharField(max_length=200, unique=True)
    slug = models.SlugField(max_length=200, unique=True)
    author = models.ForeignKey(User, on_delete= models.CASCADE,related_name='blog_posts')
    updated_on = models.DateTimeField(auto_now= True)
    content = models.TextField()
    created_on = models.DateTimeField(auto_now_add=True)
    status = models.IntegerField(choices=STATUS, default=0)

    class Meta:
        ordering = ['-created_on']

    def __str__(self):
        return self.title

我需要创建 4 个字段:

  • 类型(字符字段长度=200)
  • 项目状态(带有 OKNOK 选项的组合框)
  • 排名(数字,1-10)
  • 已部署(字符字段长度=200)

我尝试将这些字段简单地添加到下面的 models.py 中,但它破坏了网站:

title = models.CharField(max_length=200, unique=True)
slug = models.SlugField(max_length=200, unique=True)
Types = models.CharField(max_length=200, unique=True)
etc

我的 anaconda 提示错误: TabError:缩进中制表符和空格的使用不一致

我还需要在哪里添加字段?我需要创建一个单独的类吗?如果是这样,我如何添加到创建帖子后端?

【问题讨论】:

    标签: python django anaconda blogs


    【解决方案1】:

    当您在 python 中缩进时,python 只希望第一行的缩进应该与其余行的缩进相同,无论是 4 个空格、1 个空格、1 个制表符还是其他。

    正如PEP-8 所建议的,我们应该使用“空格”而不是“制表符”!无论如何,错误表明您可能添加了那些在缩进中使用不一致的制表符和空格的新字段(即,您可能使用的是制表符而不是 4 个空格)

    【讨论】:

    • 这是正确的,我确实使用了 4 个空格并且它不再破坏网站,我在网站的前端收到一个数据库错误:OperationalError at / no such column: blog_post.tipo请求方法:GET 请求 URL:http:XXXXX Django 版本:2.2.5 异常类型:OperationalError 异常值:没有这样的列:blog_post.tipo 异常位置:\conda\conda\envs\djangoenv\lib\site-packages\django\ db\backends\sqlite3\base.py 在执行中,第 383 行
    • 您是否尝试过这些命令:python3 manage.py makemigrations,然后是python manage.py migrate?无论如何,这是一个不同的问题。我建议关闭此问题并重新开始关注新问题
    • 就是这样,@aminrd。这里是一个菜鸟的错误……嗯,这是唯一的学习方法!请把它写成答案,以便我可以适当地奖励你。
    • 你可以在这个链接中找到你的答案:dev2qa.com/how-to-add-new-model-field-to-exist-django-model
    • 对于新字段,如果你想在执行makemigrationsmigrate命令之前保留你当前的数据库,你应该有一个默认值
    【解决方案2】:

    错误的含义与它所说的完全一样。请记住 Python 不使用大括号,它使用缩进。你必须确保你的行正确缩进。我不知道您正在使用的编辑器,但您可以检查它是否有格式化插件或扩展。不过,一个快速的解决方案是删除所有空格,然后使用制表符缩进。缩进是通过制表键而不是空格键完成的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-16
      • 2014-04-30
      • 2020-11-13
      • 2020-09-07
      • 2021-12-12
      相关资源
      最近更新 更多