发布信息

django如何给外键赋值 2023年最新整顿 (django框架)

     2024-10-23 20:55:15     169

本文目录导航:

django如何给外键赋值(2023年最新整顿)

django如何设置外键

先给data赋值了之后,再去用p保留。例如:

>django models.SlugField 怎样经常使用

class SlugField([max_length=50, **options])

Slug 是一个资讯术语,理论是某些物品的短标签。

一个slug只能蕴含字母、数字、下划线或许是连字符,理论用来作为短标签。

理论它们是用来放在URL里的。

像CharField一样,你可以指定max_length(也请参阅该局部中的无关数据库可移植性的说明和max_length)。

假设没有指定 max_length, Django将会自动长度为50。

SlugField字段的_index智能设置为True。

理论依据另一个值智能生成slug来填充到SlugField的值。

你可以在admin中经常使用prepopulated_fields智能口头此操作。

哪个版本的Django中objects(2023年最新分享)

python的django内(gname=www)如何写蕴含www的呢?

经常使用__contains

(gname__contains=www)

网页链接

留意get必定取得且正好取得一条记载。

假设Grades中有多条gname字段蕴含www的记载将抛出MultipleObjectsReturned意外,而假设没有记载合乎条件将抛出DoesNotExist意外。

django2.1可以装置哪个版本drf

3.10.0版。

假设django装置的是2.0版本,倡导装置以下版本,pipinstalldjangorestframework==3.10.0。

django2.0外键处置

Django2.0里model外键和一对一的on_delete参数

在django2.0后,定义外键和一对一相关的时刻须要加on_delete选项,此参数为了防止两个表里的数据不分歧疑问,不然会报错:

TypeError:__init__()missing1requiredpositionalargument:on_delete

举例说明:

user=(User)

owner=(UserProfile)

须要改成:

user=(User,on_delete=)?????--在老版本这个参数()是自动值

owner=(UserProfile,on_delete=)???--在老版本这个参数()是自动值

参数说明:

on_delete有CASCADE、PROTECT、SET_NULL、SET_DEFAULT、SET()五个可选用的值

CASCADE:此值设置,是级联删除。

PROTECT:此值设置,是会报完整性失误。

SET_NULL:此值设置,会把外键设置为null,前提是准许为null。

SET_DEFAULT:此值设置,会把设置为外键的自动值。

SET():此值设置,会调用外面的值,可以是一个函数。

普通状况下经常使用CASCADE就可以了。

上方是官网文档说明:

ForeignKeyacceptsotherargumentsthatdefinethedetailsofhowtherelationworks.

WhenanobjectreferencedbyaForeignKeyisdeleted,DjangowillemulatethebehavioroftheSQLconstraintspecifiedbytheon_,ifyouhaveanullableForeignKeyandyouwantittobesetnullwhenthereferencedobjectisdeleted:

user=(User,_NULL,blank=True,null=True,)

Deprecatedsinceversion1.9:on_.

Thepossiblevaluesforon_:

django如何给外键赋值

CASCADE[source]?

PROTECT[source]?

PreventdeletionofthereferencedobjectbyraisingProtectedError,.

SET_NULL[source]?

SettheForeignKeynull;thisisonlypossibleifnullisTrue.

SET_DEFAULT[source]?

SettheForeignKeytoitsdefaultvalue;adefaultfortheForeignKeymustbeset.

SET()[source]?

SettheForeignKeytothevaluepassedtoSET(),orifacallableispassedin,,:

_user__sentinel_user():returnget_user_model()_or_create(username=deleted)[0]classMyModel():user=(_USER_MODEL,on_delete=(get_sentinel_user),)

DO_NOTHING[source]?

,thiswillcauseanIntegrityErrorunlessyoumanuallyaddanSQLONDELETEconstrainttothedatabasefield.

_choices_to?

SetsalimittotheavailablechoicesforthisfieldwhenthisfieldisrenderedusingaModelFormortheadmin(bydefault,allobjectsinthequerysetareavailabletochoose),aQobject,oracallablereturningadictionaryorQobjectcanbeused.

Forexample:

staff_member=(User,on_delete=,limit_choices_to={is_staff:True},)

causesthecorrespondingfieldontheModelFormtolistonlyUsersthathaveis_staff=.

Thecallableformcanbehelpful,forinstance,:

deflimit_pub_date_choices():return{pub_date__()}limit_choices_to=limit_pub_date_choices

Iflimit_choices_toisorreturnsaQobject,whichisusefulforcomplexqueries,thenitwillonlyhaveaneffectonthechoicesavailableintheadminwhenthefieldisnotlistedinraw_id_fieldsintheModelAdminforthemodel.

Ifacallableisusedforlimit_choices_to,,,sothereisapossibilityyourcallablemaybeinvokedseveraltimes.

求教Python里的queryset是什么,以及Objects类的用法?

这是哪儿的django面试标题或许口试标题吧,请检查django开发手册。

是查问集,就是传到主机上的url外面的查问内容。

Django会对查问前往的结果集QuerySet启动缓存,这是为了提高查问效率。

也就是说,在你创立一个QuerySet对象的时刻,Django并不会立刻向数据库收回查问命令,只要在你须要用到这个QuerySet的时刻才会这样做。

是django成功的mvc中的m,Django中的模型类都有一个objects对象,它是一个Django中定义的QuerySet类型的对象,它蕴含了模型对象的实例。

3.不能,由于get或许会无心外,可以用filter函数,如下

(blog__id__exact=1)#显示的经常使用__exact

(blog__id=1)#隐含的经常使用__(blog__pk=1)#__pk相当于__id__exact

Django,和的区别

踩坑记载

前提,已有模型,假设ID存在则update其余字段,假设不存在则做add操作,不时启动add操作无法走到update,造成数据重复参与

的()方法

经过get失掉,前往的是一个记载对象,假设结果不存在或许是有多条结果,无法进入if语句下,间接跳到except

get()内参数准许多个,and的相关,需同时满足

的()方法:

obi=(id=id)[0]

经过filter前往的是一个对象列表,假设结果不存在会前往[]

总结:get方法只能取到一个对象,而filter方法可以取到多个对象get方法取不到对象的话就会报错,而filter办规律同样,它是前往一个空列表

Django中,和Model的区别

django的get和filter方法是djangomodel罕用到的,搞分明两者的区别十分关键。

为了说明它们两者的区别定义2个models

classStudent():

name=(姓名,max_length=20,default=)

age=(年龄,max_length=20,default=)

classBook():

student=(Student)

一.先说下django的get方法:

1django的get方法是从数据库的取得一个婚配的结果,前往一个对象,假设记载不存在的话,它会报错。

比如我数据库里有一条记载,记载的name的值是Python的话,我用student=(name=老王python),

前往的是一个记载对象,你可以经过student.__dict__来检查,它前往的是一个字典的方式,{key:valeus},key是字段的称号,而values是值的内容。

而假设我用get方法来查问一个数据库里不存在的记载,程序会报错。

比如:student=(name=老王),你自己可以运转看下。

2假设你用django的get去取得关联表的数据的话,而关键表的数据假设多于2条的话也会报错。

比如我的student表里有一个记载:

book表:

idstudent_id

我用

student=(name=python)

book=(student)

它也会报错,由于book表有2条记载和student表相婚配。

二.再说下djangofilter:

1django的filter方法是从数据库的取得婚配的结果,前往一个对象列表,假设记载不存在的话,它会前往[]。

比如我数据库里有一条记载,记载的name的值是Python的话,我用student=(name=老王python)

它前往的student是一个对象的列表,可以看的进去student[0]和上方的get方式前往的student的结果是一样的。

相关内容 查看全部