纵有疾风起
人生不言弃

Django admin注册model究竟要怎么写才优雅

比如在Django admin 注册models时,会用到。

对于APP里自带的models,可以使用这种方式注册。

from django.contrib import admin# Register your models here.from django.apps import appsfrom django.contrib.admin.sites import AlreadyRegisteredapp_models = apps.get_app_config("crm").get_models()  # 获取app:crm下所有的model,得到一个生成器# 遍历注册modelfor model in app_models:    try:        admin.site.register(model)    except AlreadyRegistered:        pass

但是如果想要扩展models在Django admin页面的显示效果时,就没法用上面的方法了,但是可以使用装饰器来简化书写的代码量。

from django.contrib import admin# Register your models here.from bbs import models@admin.register(models.Article)class ArticleAdmin(admin.ModelAdmin):    list_display = ('title', 'category', 'author', 'pub_date', 'last_modify', 'status', 'priority')@admin.register(models.Comment)class CommentAdmin(admin.ModelAdmin):    list_display = ('article', 'parent_comment', 'comment_type', 'comment', 'user', 'date')@admin.register(models.Category)class CategoryAdmin(admin.ModelAdmin):    list_display = ('name', 'set_as_top_menu', 'position_index')admin.site.register(models.UserProfile)

补充一个获取模块中类名的方法。

import inspect# 找出模块里所有的类名def get_classes(arg):    classes = []    clsmembers = inspect.getmembers(arg, inspect.isclass)    for (name, _) in clsmembers:        classes.append(name)    return classes

 

文章转载于:https://www.cnblogs.com/liwenzhou/p/5528509.html

原著是一个有趣的人,若有侵权,请通知删除

未经允许不得转载:起风网 » Django admin注册model究竟要怎么写才优雅
分享到: 生成海报

评论 抢沙发

评论前必须登录!

立即登录