【主机管理项目】-(models.py(一对多、多对多数据库创建代码))
2024-10-07 12:42:21
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models class UserType(models.Model):
caption = models.CharField(max_length=32) class User(models.Model):
name = models.CharField(max_length=32)
age = models.IntegerField()
user_type = models.ForeignKey('UserType', to_field='id') class Host(models.Model):
envid = models.CharField(max_length=32, db_index=True)
ip = models.GenericIPAddressField(protocol='both', max_length=32, db_index=True)
port = models.CharField(max_length=32)
username = models.CharField(max_length=32)
password = models.CharField(max_length=32)
item = models.ForeignKey(to='TestItem', to_field='id') class TestItem(models.Model):
item = models.CharField(max_length=32)
versionNum = models.CharField(max_length=32) class Application(models.Model):
name = models.CharField(max_length=32)
r = models.ManyToManyField('Host') # 方式一:自定义关系表 class Host(models.Model):
nid = models.AutoField(primary_key=True)
hostname = models.CharField(max_length=32, db_index=True)
ip = models.GenericIPAddressField(protocol="ipv4", db_index=True)
port = models.IntegerField()
b = models.ForeignKey(to="Business", to_field='id') # 10
class Application(models.Model):
name = models.CharField(max_length=32) # 2 class HostToApp(models.Model):
hobj = models.ForeignKey(to='Host', to_field='nid')
aobj = models.ForeignKey(to='Application', to_field='id') # HostToApp.objects.create(hobj_id=1,aobj_id=2)
# 方式二:自动创建关系表 class Host(models.Model):
nid = models.AutoField(primary_key=True)
hostname = models.CharField(max_length=32, db_index=True)
ip = models.GenericIPAddressField(protocol="ipv4", db_index=True)
port = models.IntegerField()
b = models.ForeignKey(to="Business", to_field='id') # 10
class Application(models.Model):
name = models.CharField(max_length=32)
r = models.ManyToManyField("Host") # 无法直接对第三张表进行操作 obj = Application.objects.get(id=1)
obj.name # 第三张表操作
obj.r.add(1)
obj.r.add(2)
obj.r.add(2, 3, 4)
obj.r.add(*[1, 2, 3, 4]) obj.r.remove(1)
obj.r.remove(2, 4)
obj.r.remove(*[1, 2, 3]) obj.r.clear() obj.r.set([3, 5, 7]) # 所有相关的主机对象“列表” QuerySet
obj.r.all()
最新文章
- Redis系列(六)-SortedSets设计技巧
- Source Insight编辑器配置
- Android UI设计中一些不错的示例及第三方控件
- Linux安装配置sun-java
- 黑马程序员_Java基础:十进制转换其他进制
- Linux kernel develop -- Hello World
- 【M2】最好使用C++转型操作符
- [KISSY5系列]KISSY5安装使用(二)
- 流行框架(angularj基础)
- Django:安装和启动
- 【学习总结】GirlsInAI ML-diary day-3-数据类型
- Spring框架IOC和AOP的实现原理
- openssl编译参数选项
- Jsch - java SFTP 文件上传下载
- 利用Gson将JSON数据进行格式化(pretty print)
- Convert CString to ANSI string in UNICODE projects
- Kafka Tools
- PSP Daily软件Alpha版本——基于NABCD评论,及改进建议
- 斜率优化dp学习
- vue 整体引入 mint-ui 样式失败