当前位置:首页 » 操作系统 » django数据库字段

django数据库字段

发布时间: 2022-10-06 06:56:07

‘壹’ 关于django数据库设计,双表互为外键

数据库设计是整个设计最基础的部分

1、django app的设计:根据系统的需求分析来设计django的app,django的开发是基于app来开发的,所以第一步就是设计app。

2、各appmodel的设计:也就是设计对应的数据表

3、数据表的生成以及修改

使用在线教育系统作为实例:

userprofile的设计:在任何一个系统中,user表都是第一个被设计的,django会产生几个默认用户数据表

在设计我们自己的user表的时候,我们希望能生成自己的表又希望能够继承django的默认表,此时,我们可以继承AbstractUser(

from django.contrib.auth.models import AbstractUser

class UserProfile(AbstractUser):
pass
定义完UserProfile表之后,我们需要在setting.py文件中注册users app,INSTALLED_APPS = [

'users',
]
并且定义一个方法AUTH_USER_MODEL = "users.UserProfile",注意这里是使用users.UserProfile而不是users.model.UserProfile
(1)user model的设计:
我们在设计django app的时候,每个app中都有model,model文件中很有可能用到其他app文件当中的model,这就会很容易引入循环引用的问题,为了解决这个问题,很常用的一种方法就是使用分层model的方法,也就是上一层可以引用下一层
的model,如下:

注:PEP8的在引入的规范是第一个区域是导入python自带的包,然后隔一行的第二个区域是第三方的包,如django,然后隔一行的第三个区域是我们自己定义的一些model

(2)coursemodel的编写:一个数据可能和另一个数据是一对多的关系,但是一张表存储不了这种关系,所以就需要把这两个数据分别存储在不同的数据表当中,这样就会引入外键的关系。

model的FileFIield,定义了这个字段就可以在后台系统中生成上传文件的按钮

(3)oganizationmodel的编写:

(4)operation的model编写:

所有的APP编写完成之后,我们可以建立Python的apps包,把所有的app都放到这个apps中,把所有的APP放到apps之后,会发现各个app的model的引用可能会出现红线,说明我们找不到这些引用的包,所以需要我们在setting.py文件当中
把apps加入Python的搜索目录之下,
import syssys.path.insert(0, os.path.join(BASE_DIR, 'apps'))

‘贰’ django更新模型的部分字段怎么做

  1. 在class里更新字段

  2. 运行python manage.py makemigrations记录迁移

  3. 运行Pythonmanage.py migrate 将更新实施到数据库表中

这个过程中可能会出现很多问题,比如已有的数据记录怎么更新,关联的对象怎么处理。详细可参考刘江的博客和教程:liujiangblog-com

‘叁’ django(python)的模型字段类的实例化问题,新手请教。

这些东西,都有办法。我都用过。不过,最近不用了。我只能给你一个指引。

在django提供的管理类里admin有所有这些用法。你可以找到它的源代码,自己读一下。

DataField的确需要一个这样的对象来给它才可以向数据库写。

ForiegnKey也的确需要一个已建立好的class。 比如ForiegnKey(anotherModel), anotherModel一定是一个已定义好的class

另外在djangoproject的官网中有丰富的帮助。大部分答案都可以搜索到。

‘肆’ django中怎么动态操作数据库字段

django的ORM系统不支持修改删除字段的操作,也就是说你在写模型model文件的时候,比如说定义了这个user表,然后包含字段telphone定义,你一旦执行了manage.py syncdb 这个操作,就把表结构往数据库写死了,如果你之是删除了model文件的telphone,数据库是不被重新修改的。这个时候必须用原生sql解决,也就是说自己写SQL语句让django执行,这样的话会出很多问题,也就是说你执行了alter table users drop column telphone之后,你的model文件不知道你已经对users表结构做了修改,这样会出直接导致django应用的崩溃。所以动态字段不好做。也可能是我才疏学浅,没太理解,也许有高人能做到。不过面对ORM这样的尽量别删除字段。

‘伍’ Django的orm中怎么让外键字段不加_id

外键在数据库中的默认字段名是它在模型中的属性名+_id。可以在创建外键时使用db_column参数显式地指定一个字段名,来覆盖这么默认字段名。

author = models.ForeignKey('Author', on_delete=models.CASCADE, db_column='foobar')
那么数据库中这个外键字段名就是foobar,而不是author_id。

‘陆’ django在读取数据库后返回的是一个对象,如何将对象中的字段(属性)读出

你用all() 返回的是一个对象列表。这样的 [obj1, obj2, ...]
使用 obj.objects.get(id=**) 这样得到的是一个对象, 或者使用 get_object_or_404(obj, id=**)
这样的话, 使用 obj.objects.get(id=**).属性名 既可以了

或者
for obj in obj.objects.all():
obj.属性名

明白了吧

‘柒’ Django 数据库添加字段

你说对了,假设你用数据库管理工具的话,你要先选择你工程所对应的数据库,比如mysql,直接用控制台操作的话,你需要先执行use yourdb,而用manage.py dbshell会自动链接到你用的数据库,省了输入用户名密码和use yourdb的过程。

热点内容
光介质存储 发布:2024-05-07 01:32:25 浏览:350
苹果平板ipad密码忘了怎么办 发布:2024-05-07 01:17:16 浏览:704
伏吟的算法 发布:2024-05-07 00:51:48 浏览:830
安卓手机上的照相键在哪里 发布:2024-05-07 00:51:45 浏览:606
ftp如何删除顽固文件 发布:2024-05-07 00:50:57 浏览:251
idea文件夹显示 发布:2024-05-07 00:30:04 浏览:250
怎么把ps存储为ai 发布:2024-05-07 00:30:03 浏览:274
参数内存缓存 发布:2024-05-07 00:28:54 浏览:747
android状态栏高度 发布:2024-05-07 00:24:42 浏览:242
数据库主文件 发布:2024-05-07 00:14:41 浏览:609