首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Django中传递和接收object pk来修复CreateView中的外键字段

,可以通过以下步骤来实现:

  1. 首先,确保你的模型中有一个外键字段,用于关联到其他模型。例如,假设我们有一个名为Order的模型,其中包含一个外键字段customer,关联到Customer模型。
  2. 在创建CreateView视图类时,可以通过重写get_context_data()方法来传递object pk到模板中。在get_context_data()方法中,我们可以获取到object pk的值,并将其传递给模板。代码示例如下:
代码语言:txt
复制
from django.views.generic import CreateView
from .models import Order

class OrderCreateView(CreateView):
    model = Order
    fields = ['customer']

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['customer_pk'] = self.kwargs.get('pk') # 获取object pk的值
        return context
  1. 接下来,在模板中,我们可以通过在URL模式中指定object pk来传递值给视图,并在表单中使用该值。代码示例如下:
代码语言:txt
复制
<!-- urls.py -->
from django.urls import path
from .views import OrderCreateView

app_name = 'orders'
urlpatterns = [
    path('create/<int:pk>/', OrderCreateView.as_view(), name='order_create'),
]

<!-- order_form.html -->
<form method="post">
  {% csrf_token %}
  {{ form.as_p }}
  <input type="hidden" name="customer" value="{{ customer_pk }}">
  <button type="submit">Submit</button>
</form>

在上述示例中,我们通过URL的<int:pk>部分来传递object pk的值,并在模板中使用customer_pk来表示该值。

通过以上步骤,我们可以在Django中传递和接收object pk来修复CreateView中的外键字段。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Django学习-第七讲:django 常用字段字段属性,表关系、操作

表关系 MySQL,表有两种引擎,一种是InnoDB,另外一种是myisam。如果使用是InnoDB引擎,是支持约束存在使得ORM框架在处理表关系时候异常强大。...因此这里我们首先来介绍下Django使用。 类定义为class ForeignKey(to,on_delete,**options)。...因此底层,Django为Article表添加了一个属性名_id字段(比如author字段名称是author_id),这个字段是一个,记录着对应作者主键。...论坛开发,一般评论都可以进行二级评论,即可以针对另外一个评论进行评论,那么定义模型时候就需要使用引用自身 class Comment(models.Model): content...如果设置这个选项,前提是要指定这个字段一个默认值。 5.SET():如果那条数据被删除了。那么将会获取SET函数值来作为这个值。

4K30
  • djangoModelForm多表单组合解决方案

    告诉django需要在表单创建哪些字段。...3、通用视图 django.views.generic.ListViewdjango.views.generic.edit下CreateView, UpdateView, DeleteView都是通用视图...可以看到,除去定义model或者form类,几行代码就可以搞定这么多事。我们看看CreateView继承关系: 简单介绍下CreateView通用视图中每个父类作用。...,此时是不能save,因为projectaddress对应数据库记录还没有创建,所以commit传为False           contract = form.save(commit=False...#按照四条数据库记录顺序依次创建(调用save方法)、主键赋到下一条记录、下一次记录创建(save)           projectAddress = context['projectAddressForm

    3.4K20

    浅谈django不使用restframework自定义接口与使用区别

    1.定义我们需要模型类,并且在对应模型类定义对应将对象转化为字典函数 from django.db import models class Questionnaire(models.Model...question_id=self.question.id,content=self.content) def __str__(self): return self.content 将你需要转化为字典字段添加进函数...,当指定时,”related_name”为指定关系名,用于反向查找,比如通过问卷查找问题,但是问卷模型类没有question字段,但是question类中指定questionnaire时指定了关系名...serializers.ModelSerializer): class Meta: model = Choice fields = ('content','question') 使用这些序列化类序列化我们需要字段...,并不能返回它所关联属性字段,要想获取其他关联模型类数据就得定义另外类视图,那么对应url也需要配置。

    78230

    Django源码学习-8-ListView&DetailView通用视图

    Django网络应用开发5项基础核心技术包括模型(Model)设计,URL 设计与配置,View(视图)编写,Template(模板)设计Form(表单)使用。...Django通用视图可以减少开发单调性,它抽象出一些视图开发中常用代码模式,这样就可以无需编写大量代码情况下,快速编写出常用视图函数。 ?...): # 指明要操作Model(展示 Publisher 所有对象) model = Publisher # 模板 context model 变量名,默认是 object_list...② DetailView:显示一个对象某个属性详细信息 用于显示某一 Model 一个 object 详细信息。...用属性 model 或 queryset 指定要操作 Model 或 queryset; DetailView 会根据 URLConf 或 筛选出一个

    1.4K10

    Python-Django

    假设用户要访问某篇文章,它会自动解析 blog:detail 这个视图函数对应 url,并且把 article.pk(文章主键)传递给detail视图函数,details就是我们blog/urls.py...url return reverse('blog:detail', kwargs={'article_id': self.pk}) Django给我们提供了很多有用字段,比如上面提到...Django一对多是进行设置,这里对应于文章分类,ForeignKey即数据库。...,直接制定model就行了,get_context_data可以添加一些额外字段,比如以后我们要在首页侧边栏显示目录标签,所以这里要添加一个category_listtag_list。...= "article" # pk_url_kwarg会自动model相应主键对应,aritlce_id就是下面配置URLCONF pk_url_kwarg = 'article_id

    72920

    基于python+django二手商品交易平台-二手商品供需系统

    项目简介该项目是基于pythonweb类库django开发一套web网站,二手商品交易平台,给师弟开发课程作业。大家在学习过程,遇到问题可以github咨询作者。...return Product.objects.filter(status=0).order_by('-timestamp')详情页我们再来开发详情页,从urls.py中看到,详情页是由DetailView实现...,我们窥探它全貌:class DetailView(generic.DetailView): model = Product template_name = 'app/detail.html...提交页最后再来看一下提交页,它是由CommitView实现。...") return reverse('app:commit')它是继承自CreateView,因为是创建操作嘛,post,我们通过ratelimit限制提交次数,防止恶意提交。

    51000

    django小技巧之html模板调用对象属性或对象方法

    … ] … 项目名称目录下,添加模板目录并在其下添加应用模板目录: ]# mkdir -p templates/bookshop 主url路由配置文件,添加查找应用url路由:...book = models.ForeignKey(‘BookInfo’) #定义,此处引号是否可省略,BookInfo先定义就可省略引号,如果后定义则需要使用引号,使用引号绝对没错;字段自动变为...pymysql pymysql.install_as_MySQLdb() 再次启动web服务成功;浏览器访问:http://192.168.255.70:8000/ 完成验收在html模板文件调用对象属性对象方法...您可能感兴趣文章: 简单了解Django模板使用 django模板语法学习之include示例详解 解决Django模板无法使用perms变量问题方法 基于Django模板数字自增(详解) Django...模板变量如何传递给外部js调用方法小结 python Django模板使用方法 编写自定义Django模板加载器简单示例 python Django模板使用方法(图文)

    3.3K21

    Django ORM 多表操作

    (ManyToManyField):第三张关系表中新增数据 ORM 修改数据 ORM 删除清空数据 跨表查询 基于对象跨表查询 基于双下划线跨表查询 聚合查询 示例 F查询 Q查询 Django...ORM 多表操作 表模型 图书表 出版社表 作者表 作者详情表 表关系 一对一:一对一推荐建在查询频率高一方 一对多:字段建在多一方 多对多:字段建在查询频率多一方,Django第三张表不需要创建...,自动创建 ps:字段不需要写表名_id后面的_id,ORM创建时候自动添加了_id,以及以虚拟字段形式存在 创建模型 '''models.py''' from django.db import...3、一般不需要设置联级更新. 4、一对多设置:models.ForeignKey("关联类名", on_delete=models.CASCADE)。...) 一对多,设置属性类(多表),MySQL 显示字段名是:属性名_id。

    1.8K20

    基于django视频点播网站开发-step6-个人中心功能

    需要我们做就是users/urls.py添加个人资料路由, path('profile//', views.ProfileView.as_view(), name='profile...': self.request.user.pk}) 简单几行代码,就实现了个人资料更新,再次彰显了django框架强大。...我们这里继承了UpdateView实现更新操作,DetailView类似,我们这里也设置了modeltemplate_name 还有form_class。...当更新成功后,django会回调get_success_url将结果告诉模板,因此我们可以get_success_url里面做一些定制工作,我们可以传一些自己参数。...'), 我们设置订阅视图类为SubscribeView,因为订阅功能修改个人资料功能类似,也是属于更新操作,所以同样是使用UpdateView更新。

    1.2K00

    django自定义非主键自增字段类型详解(auto increment field)

    ,这个字段可以是主键,也可以不是主键,如果不是主键,则必须设置为一种“(key)” # (primary key)也是(key)一种,key还包括(foreign key)、唯一(unique...如果您修复了这个问题请留言回复下,谢谢 4.bug修复 以一种非常不优雅方法进行了简单修复,重写了模型save方法,save后从新get class AutoIncreFieldFixMinxin...多对多:某表创建一行数据是,有一个可以多选下拉框 例如:创建用户信息,需要为用户指定多个爱好 一对一:某表创建一行数据时,有一个单选下拉框(下拉框内容被用过一次就消失了 例如:原有含10...(表名__字段名=1).values('表名__字段名') limit_choices_to=None, # Admin或ModelForm显示关联数据时,提供条件: # 如: - limit_choices_to...parent_link=False # Admin是否显示关联数据 OneToOneField(ForeignKey) to, # 要进行关联表名 to_field=None # 要关联字段名称

    2.3K10

    基于django视频点播网站开发-step5-详情页功能

    success回调,通过判断user_liked确定自己是否喜欢过,然后改变模板相应css。 推荐功能 每个网站都有自己推荐功能,且都有自己推荐逻辑。...实现起来非常容易,我们知道详情页实现用是VideoDetailView,我们可以get_context_data()把推荐内容传递给前端模板。...数据类型是ForeignKey,是settings.AUTH_USER_MODEL,并设置为级联删除on_delete=models.CASCADE nickname 用户昵称。...接收函数,通过form自带验证函数来保存记录,然后将这条记录返回到前端模板。 下面我们开始评论列表开发。...当获取到pagepage_size后,使用paginator对象实现分页。最后通过render_to_string将html传递给模板。

    2.1K30

    Django REST 框架详解 04 | 序列化与反序列化及二者整合

    1.视图 2.路由 3.接口测试 一、序列化 1.步骤 model s.py,定义表与字段,及表关系 serializes.py 序列化与反序列化 views.py 写 get,post 等操作...import models # 基表 # 提供公用字段,而不创建表 from django.contrib.auth.models import User class BaseModel(models.Model...publish ,提数据 publish = PublishModelSerializer() class Meta: # 序列化类关联 model 类...def validate(self, attrs): # 同一出版社不能出版同一本书 publish = attrs.get('publish') # 这里已经变成对象...三、序列化与反序列整合 从数据安全性健壮性考虑,所有的自定义字段不能与 model 字段相同 因为序列化是将字段作为 Dict,而反序列化会将字段作为 Object 1.视图 views.py

    1.1K10
    领券