django怎么调用外键(django自定义按钮功能)

您所在的位置:网站首页 王者荣耀霸王别姬的语音 django怎么调用外键(django自定义按钮功能)

django怎么调用外键(django自定义按钮功能)

#django怎么调用外键(django自定义按钮功能)| 来源: 网络整理| 查看: 265

django怎么调用外键(django自定义按钮功能)Python2023.01.31810

导读:本篇文章首席CTO笔记来给大家介绍有关django怎么调用外键的相关内容,希望对大家有所帮助,一起来看看吧。

django 插入外键值思路

1.先确定需要添加添加的带有外键的数据格式,涉及几个表

2.前端组装好这个数据格式传回后端

3.后端验证数据,从请求中分离出外键的值,进行获取对象

4.使用add进行添加外键的值

r1=Role.objects.get(role_name=role) # r1表示UserInfo的多对多数据

u1=UserInfo(user_name=name,user_pwd=password,sex=sex,mobileno=mobile,email=email)

u1.save()

u1.role.add(r1)

u1.save()

django 插入多对多数据

django怎么调用外键(django自定义按钮功能) 第1张

django 2.0外键处理

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

在django2.0后,定义外键和一对一关系的时候需要加on_delete选项,此参数为了避免两个表里的数据不一致问题,不然会报错:

TypeError: __init__() missing 1 required positional argument: 'on_delete'

举例说明:

user=models.OneToOneField(User)

owner=models.ForeignKey(UserProfile)

需要改成:

user=models.OneToOneField(User,on_delete=models.CASCADE)          --在老版本这个参数(models.CASCADE)是默认值

owner=models.ForeignKey(UserProfile,on_delete=models.CASCADE)    --在老版本这个参数(models.CASCADE)是默认值

参数说明:

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

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

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

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

SET_DEFAULT:此值设置,会把设置为外键的默认值。

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

一般情况下使用CASCADE就可以了。

下面是官方文档说明:

ForeignKey accepts other arguments that define the details of how the relation works.

ForeignKey.on_delete ¶

When an object referenced by a ForeignKey is deleted, Django will emulate the behavior of the SQL constraint specified by the on_delete argument. For example, if you have a nullable ForeignKey and you want it to be set null when the referenced object is deleted:

user=models.ForeignKey(User,models.SET_NULL,blank=True,null=True,)

Deprecated since version 1.9: on_delete will become a required argument in Django 2.0. In older versions it defaults toCASCADE.

The possible values for on_delete are found in django.db.models :

CASCADE [source] ¶

Cascade deletes. Django emulates the behavior of the SQL constraint ON DELETE CASCADE and also deletes the object containing the ForeignKey.

PROTECT [source] ¶

Prevent deletion of the referenced object by raising ProtectedError , a subclass of django.db.IntegrityError .

SET_NULL [source] ¶

Set the ForeignKey null; this is only possible if null isTrue.

SET_DEFAULT [source] ¶

Set the ForeignKey to its default value; a default for the ForeignKey must be set.

SET() [source] ¶

Set the ForeignKey to the value passed to SET() , or if a callable is passed in, the result of calling it. In most cases, passing a callable will be necessary to avoid executing queries at the time your models.py is imported:

fromdjango.confimportsettingsfromdjango.contrib.authimportget_user_modelfromdjango.dbimportmodelsdefget_sentinel_user():returnget_user_model().objects.get_or_create(username='deleted')[0]classMyModel(models.Model):user=models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.SET(get_sentinel_user),)

DO_NOTHING [source] ¶

Take no action. If your database backend enforces referential integrity, this will cause an IntegrityError unless you manually add an SQLONDELETEconstraint to the database field.

ForeignKey.limit_choices_to ¶

Sets a limit to the available choices for this field when this field is rendered using aModelFormor the admin (by default, all objects in the queryset are available to choose). Either a dictionary, a Q object, or a callable returning a dictionary or Q object can be used.

For example:

staff_member=models.ForeignKey(User,on_delete=models.CASCADE,limit_choices_to={'is_staff':True},)

causes the corresponding field on theModelFormto list onlyUsersthat haveis_staff=True. This may be helpful in the Django admin.

The callable form can be helpful, for instance, when used in conjunction with the Pythondatetimemodule to limit selections by date range. For example:

deflimit_pub_date_choices():return{'pub_date__lte':datetime.date.utcnow()}limit_choices_to=limit_pub_date_choices

Iflimit_choices_tois or returns a Qobject , which is useful for complex queries , then it will only have an effect on the choices available in the admin when the field is not listed in raw_id_fields in theModelAdminfor the model.

Note

If a callable is used forlimit_choices_to, it will be invoked every time a new form is instantiated. It may also be invoked when a model is validated, for example by management commands or the admin. The admin constructs querysets to validate its form inputs in various edge cases multiple times, so there is a possibility your callable may be invoked several times.

django如何设置外键

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

data=Lessonruntime()

data.***=*** #(给data的列赋值)

data.save() #保存data(注,只有在新建data数据时才要,否则用 Lessonruntime.object.get()来获取data的值)

p = Checkinlog(lessonruntimeid=data)

p.save()

这样就可以了。

不可以用 p = Checkinlog(lessonruntimeid=1134)的方式进行赋值。

django model里怎么实现外键对多种model

首先题主用的Django版本是什么,django貌似没见过ForeignModel,根据orm,ForeignKey实际上就是sql里面的外键,个人理解楼主的题目是能不能一个字段对应多个其他表,如下:

class WhatAreYouTryToAsk:

filed_XXX = models.ForeignKey((ModelA,ModelB,))

这是不科学的啊亲,对于sql来说也不会一个字段能对应多个外键,想实现这种效果只能是有一张ModelA,ModelB的中间表,而filed的外键对应这张中间表

class MiddleTable(models.Model):

model_a = models.ForeignKey(ModelA)

model_b = models.ForeignKey(ModelB)

class WhatAreYouTryToAsk:

filed_XXX = models.ForeignKey(MiddleTable)

简单的说就是ModelA和ModelB有一个多对多的关系,上面的方法是显示的指明一个MiddleTable表,实时上可以使用Django里面的ManyToMany,ManyToMany的实际上会建一张中间表,因此你可以在ModelA或ModelB建立一个ManyToMany的字段,具体ManyToMany的用法请查阅文档。

class ModelA(models.Model):

model_bs = ManyToMany(ModelB)

class WhatAreYouTryToAsk:

filed_XXX = models.ForeignKey(ModelA)

# or this, 具体实现看需求

# filed_XXX = models.ForeignKey(ModelB)

django中外键怎么查询

例如A表有个属性a,是B表b的外键,那么在创建b的时候,Models.ForeignKey中,有个属性叫related_name,设置为d,具体调用时,temp =A(),temp.d就可以调用了

django model外键怎么取得

例如A表有个属性a,是B表b的外键,那么在创建b的时候,Models.ForeignKey中,有个属性叫related_name,设置为d,具体调用时,temp =A(),temp.d就可以调用

结语:以上就是首席CTO笔记为大家整理的关于django怎么调用外键的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~

5打赏海报

本文转载自互联网,旨在分享有价值的内容,文章如有侵权请联系删除,部分文章如未署名作者来源请联系我们及时备注,感谢您的支持。

转载请注明本文地址:https://www.shouxicto.com/article/63393.html

上一篇:python学多久能精通(2023年最新整理)下一篇:python输入正方形边长是多少


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3