[Django学习]三、定制后台和修改模型

一、设置模型和定制admin

修改在应用article中的models.py和admin.py,

#admin.py文件如下:

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

# Create your models here.
class Article(models.Model):
    title = models.CharField(max_length=30)
    content = models.TextField()
    created_time = models.DateTimeField(auto_now_add=True)
    last_updated_time = models.DateTimeField(auto_now=True)
    author = models.ForeignKey(User, on_delete=models.DO_NOTHING, default=1)
    is_deleted = models.BooleanField(default=False)
    readed_num = models.IntegerField(default=0)

    def __str__(self):
        return "<Article: %s>" % self.title

#models.py文件如下:

from django.contrib import admin
from .models import Article

# Register your models here.
@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
    list_display = ("id", "title", "content", "author", "is_deleted", "created_time", "last_updated_time")
    ordering = ('-id',)

#admin.site.register(Article, ArticleAdmin)

#article/views.py文件如下,其中filter函数起着过滤器的作用,

from django.shortcuts import render, render_to_response, get_object_or_404
from .models import Article

# Create your views here.
def article_detail(request, article_id):
    article = get_object_or_404(Article, pk=article_id)
    context = {}
    context['article_obj'] = article
    return render_to_response("article_detail.html", context)

def article_list(request):
    articles = Article.objects.filter(is_deleted=False)
    context = {}
    context['articles'] = articles
    return render_to_response("article_list.html", context)

django的filter方法是从数据库的取得匹配的结果,返回一个对象列表,如果记录不存在的话,它会返回[]。

比如我数据库里有一条记录,记录的name的值是Python的话,我用student = Student.objects.filter(name=‘python’)
它返回的student是一个对象的列表,可以看的出来student[0]和上面的get方式返回的student的结果是一样的。

二、修改模型和修改数据库

执行以下三条命令,进行数据库的迁移更新

python manage.py makemigrations
python manage.py migrate
puthon manage.py runserver

python manage.py makemigrations 这个命令是记录我们对models.py的所有改动,并且将这个改动迁移到migrations这个文件下生成一个文件例如:0001文件,如果你接下来还要进行改动的话可能生成就是另外一个文件不一定都是0001文件,但是这个命令并没有作用到数据库

python manage.py migrate 这条命令的主要作用就是把这些改动作用到数据库也就是执行migrations里面新改动的迁移文件更新数据库,比如创建数据表,或者增加字段属性
(需要注意的是这两个命令默认情况下是作用于全局)

三、结果展示

http://127.0.0.1:8000/admin/article/article/中,显示如下

注:如果需要后台显示中文,需要在settings中修改   LANGUAGE_CODE   为   'zh-Hans'。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值