CMDB之Django 数据库ORM操作
admin
2023-06-06 15:41:54
0
CMDB实现数据展示功能部分代码。

views.py
def asset(request):
    asset = Asset.objects.all()
    return render_to_response("asset.html",{'asset': asset})
    
models.py
class Asset(models.Model):
    ipaddr = models.CharField(max_length=20, verbose_name=u'IP地址', primary_key=True)  #需定义primary_key,否则会自动创建id列
    hostname = models.CharField(max_length=30, verbose_name=u'主机名')
    nodes = models.CharField(max_length=20, verbose_name=u'应用节点')
    applications = models.CharField(max_length=30, verbose_name=u'应用名')
    group = models.CharField(max_length=20, verbose_name=u'应用组名')
    memory = models.CharField(max_length=5, verbose_name='内存大小')
    env = models.CharField(max_length=5, verbose_name='环境变量')
    flag = models.PositiveSmallIntegerField(verbose_name=u'flag')

    #def __unicode__(self):
    #    return u'%s,%s,%s,%s,%s,%s,%s,%s' %(self.ipaddr, self.hostname, self.nodes, self.app, self.group, self.memory, self.disk, self.cpu)
    class Meta:
        db_table = 'fcenv_copy'  #表名,默认为app名+类名
        verbose_name = u'主机资产信息'
        verbose_name_plural = u'主机资产信息管理'
        
asset.html


    
        

             IP地址 
             机器名 
             节点 
             应用名称 
             组别 
             内存 
             环境变量 
             flag 
             操作 
        
    
    

{% for value in asset %}

{{ value.ipaddr }}
{{ value.hostname }}
{{ value.nodes }}
{{ value.applications }}
{{ value.group }}
{{ value.memory }}
{{ value.env }}
{{ value.flag }}

    编辑
    连接
    删除

{% endfor %}

    

以下是常用ORM操作:


    # models.Tb1.objects.create(c1='xx', c2='oo')  增加一条数据,可以接受字典类型数据 **kwargs

    # obj = models.Tb1(c1='xx', c2='oo')    # obj.save()    # 查    #    # models.Tb1.objects.get(id=123)         # 获取单条数据,不存在则报错(不建议)    # models.Tb1.objects.all()               # 获取全部    # models.Tb1.objects.filter(name='seven') # 获取指定条件的数据    # 删    #    # models.Tb1.objects.filter(name='seven').delete() # 删除指定条件的数据    # 改    # models.Tb1.objects.filter(name='seven').update(gender='0')  # 将指定条件的数据更新,均支持 **kwargs         # obj = models.Tb1.objects.get(id=1)    # 修改单条数据    # obj.c1 = '111'    # obj.save()                                                           # 获取个数    #    # models.Tb1.objects.filter(name='seven').count()    # 大于,小于    #    # models.Tb1.objects.filter(id__gt=1)              # 获取id大于1的值    # models.Tb1.objects.filter(id__lt=10)             # 获取id小于10的值    # models.Tb1.objects.filter(id__lt=10, id__gt=1)   # 获取id大于1 且 小于10的值    # in    #    # models.Tb1.objects.filter(id__in=[11, 22, 33])   # 获取id等于11、22、33的数据    # models.Tb1.objects.exclude(id__in=[11, 22, 33])  # not in    # contains    #    # models.Tb1.objects.filter(name__contains="ven")    # models.Tb1.objects.filter(name__icontains="ven") # icontains大小写不敏感    # models.Tb1.objects.exclude(name__icontains="ven")    # range    #    # models.Tb1.objects.filter(id__range=[1, 2])   # 范围bettwen and    # 其他类似    #    # startswith,istartswith, endswith, iendswith,    # order by    #    # models.Tb1.objects.filter(name='seven').order_by('id')    # asc    # models.Tb1.objects.filter(name='seven').order_by('-id')   # desc    # limit 、offset    #    # models.Tb1.objects.all()[10:20]    # group by    from django.db.models import Count, MinMaxSum    # models.Tb1.objects.filter(c1=1).values('id').annotate(c=Count('num'))

    # SELECT "app01_tb1"."id", COUNT("app01_tb1"."num") AS "c" FROM "app01_tb1" WHERE "app01_tb1"."c1" = 1 GROUP BY "app01_tb1"."id"


Many-to-one relationships     多表关联查询。


from django.db import models
class Reporter(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)
    email = models.EmailField()

    def __str__(self):              # __unicode__ on Python 2
        return "%s %s" % (self.first_name, self.last_name)
class Article(models.Model):
    headline = models.CharField(max_length=100)
    pub_date = models.DateField()
    reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)

    def __str__(self):              # __unicode__ on Python 2
        return self.headline

    class Meta:
        ordering = ('headline',)
        
>>> r.article_set.filter(headline__startswith='This')
]># Find all Articles for any Reporter whose first name is "John".
>>> Article.objects.filter(reporter__first_name='John')
]>


效果图。

CMDB之Django 数据库ORM操作


附件是样式文件。

附件:http://down.51cto.com/data/2368115

相关内容

热门资讯

《给阿嬷的情书》,票房超10亿... 据网络平台数据截至5月24日,2026年度电影总票房(含预售)已突破151亿元!其中,电影《给阿嬷的...
美媒称伊朗同意放弃高浓缩铀库存 新华社华盛顿5月23日电(记者黄强 颜亮)据美国媒体23日报道,作为美国与伊朗即将达成的协议中的一个...
全自动洗衣机进水管漏水怎么办 造成全自动洗衣机进水管漏水,要根据原因寻找解决办法,1、由于洗衣机进水管使用年限过长,部分出现损坏,...
电视机闪屏一下又黑屏 问答:1、电视显示屏出现短路或损坏等问题。2、电视的信号源出现干扰。3、电视内部的小零件损坏,如屏幕...
燃气灶点火又灭了怎么回事 原因可能是燃气管道堵塞,需要清理燃气管道,自己不会的话需要让专业的人来;还有可能是燃气灶电池没有电了...
林内热水器点火后一会又熄火 林内热水器不会无缘由的打火之后又熄火,因此需要注意检查这些方面:看热水器当中的水气联动装置,看看是不...
lg电视开机后屏闪一下就黑屏怎... 出现这种情况时,一般就是电视的启动瞬间电流过大造成的,当电流过大时,电视便会自动启动内部的保护机制,...
具身智能新场景浮现,行业等待商... 近日,他山科技发布视频介绍了AI触觉剥虾机,可以给大小不一的潜江小龙虾快速去头。而在浙江纺织业工厂,...
闭眼入不踩雷的日常实用手机推荐 在如今快节奏的生活中,选择一款日常使用方便的品牌手机显得尤为重要。它不仅需要满足工作、娱乐、社交等多...
在轨期间将新开展100余项科学... 图表来源:新华社 朱杨柱 张志远 黎家盈 5月23日上午,神舟二十三号载人飞行任务新闻发布会在...