日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

django 的ORM

發布時間:2025/3/19 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 django 的ORM 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

class UserType(models.Model):
??? caption = models.CharField(
max_length=32)

class UserInfo(models.Model):
??? user_type = models.ForeignKey(UserType)
# user_type對象中封裝id,caption
???
username = models.CharField(max_length=32)

?

?

    Select

insert

一對多

django

正向

1.Models.userinfo.objects.filter(user_type__caption=xxx)

?用戶類型為xxx的用記

2.?models.UserInfo.objects.select_related().all() 兩個表做join

1.models.UserInfo.objects.create(username=’xx’,user_type_id=n)

2.models.UserInfo.objects.create(username=’xx’,

? user_type=models.UserType.objects.get(caption=’xx’),age=m)

反向

1.?obj=?models.UserType.objects.all()

2.obj=models.UserType.objects.filter(userinfo__age__gt=33)

usertype創建后會對應的創建一個與子表名(userinfo)對應的列 userinfo指向子表

3.?obj=models.UserType.objects.get(caption='ceo').userinfo_set.all()

?

----

前端

正向

1.?? obj.user_name ?obj.user_type.caption

2.?? 1 一樣

-----

反向

1.obj.caption? obj.userinfo_set.first.username

2. 與 1 一樣

3.obj.username or obj.age

------

?

?

?

??????? class Host(models.Model):

??? ???????????????? hostname = models.CharField(max_length=32)

????????????????? class HostAdmin(models.Model):

??? ???????????????? username = models.CharField(max_length=32)

??? ???????????????? host = models.ManyToManyField(Host)

?

?

多對多

django

正向

1.models.HostAdmin.objects.filter(host__hostname='host1').values()

?管理host1的所有用戶

2.admin_obj=models.HostAdmin.objects.filter(host__hostname__in=('host1','host2')).values().distinct()

?管理host1 host2的所有用戶

?

.admin_obj = models.HostAdmin.objects.get(username='user1')
host_obj_list = models.Host.objects.filter(
id__lt=3)
admin_obj.host.add(*host_obj_list) ?--
因為host_obj_list是多條,所以加 * 號

?

反向

1.?obj?=?models.Host.objects.get(id=3).hostadmin_set.all()Id=3的主機對應的管理員2.obj?=?models.Host.objects.filter(hostadmin__username='user1')

?管理員為user1 對應的主機

1. host_obj = models.Host.objects.get(id=3)

? admin_obj_list =models.HostAdmin.objects.filter(id__gt=1)

? host_obj.hostadmin_set.add(*admin_obj_list)

?

前端

正向

1.admin.username

2. {% for admin in admin_obj %}
?<
p>{{ admin.username}}? ?{% for host in admin.host.all %}{{ host.hostname}}{% endfor %}
此處的all可以改為values,但如果改成values_list,后面就需要改成host.1?(1為index值)

?

-------

反向

1.obj.username

2.obj.hostname

-------------

注:1.表名_set只能跟在結果后面,不能跟在結果集后面

轉載于:https://blog.51cto.com/120662/1766949

總結

以上是生活随笔為你收集整理的django 的ORM的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。