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

如何将外键提交到表单帖子中?python /django

在Python/Django中,将外键提交到表单帖子中可以通过以下步骤实现:

  1. 首先,在Django的模型中定义外键关系。假设有两个模型,一个是帖子(Post),另一个是用户(User)。在Post模型中,可以定义一个外键字段,指向User模型。
代码语言:python
代码运行次数:0
复制
from django.db import models

class User(models.Model):
    name = models.CharField(max_length=100)
    # 其他字段...

class Post(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    # 其他字段...
  1. 接下来,创建一个表单类来处理帖子表单的提交。可以使用Django的内置表单类(forms.ModelForm)来简化开发。
代码语言:python
代码运行次数:0
复制
from django import forms
from .models import Post

class PostForm(forms.ModelForm):
    class Meta:
        model = Post
        fields = ['title', 'content', 'user']
  1. 在视图函数中处理表单的提交。首先需要实例化表单类,并将请求中的数据传递给表单。然后,通过调用表单的save()方法保存数据到数据库。
代码语言:python
代码运行次数:0
复制
from django.shortcuts import render, redirect
from .forms import PostForm

def create_post(request):
    if request.method == 'POST':
        form = PostForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('post_list')  # 保存成功后重定向到帖子列表页面
    else:
        form = PostForm()
    return render(request, 'create_post.html', {'form': form})
  1. 最后,在模板中渲染表单。可以使用Django的模板语言来渲染表单字段。
代码语言:html
复制
<!-- create_post.html -->
<form method="POST">
  {% csrf_token %}
  {{ form.as_p }}
  <button type="submit">提交</button>
</form>

这样,用户在提交表单时,就可以选择关联的用户作为外键,并将其保存到数据库中的帖子表中。

关于腾讯云相关产品和产品介绍链接地址,可以参考腾讯云官方文档或咨询腾讯云客服获取更详细的信息。

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

相关·内容

Django model 层之Models与Mysql数据库小结

,将被存储在数据库,第二个元素用于默认表单组件展示 例: from django.db import models class Person(models.Model): SHIRT_SIZES...删除被参照表的某条表记录,同时级联删除参照表,同待删除记录存在外关联关系的记录。 PROTECT 删除被参照表的某条表记录,如果参照表,存在与该记录有关系的记录,则不让删除。...SET_NULL 删除被参照表的某条表记录,设置参照表,同待删除记录存在外关联的记录的列值为null。当且仅当设置了null=True选项时可用。...SET_DEFAULT 删除被参照表的某条表记录,设置参照表,同待删除记录存在外关联的记录的列值为默认值。必须为列设置默认值。...SET() 删除被参照表的某条表记录,设置参照表,同待删除记录存在外关联关系的记录的列值为传递给SET()的参数值,如果传递给SET()的参数值是可调用对象,则设置为调用可调用对象获取的结果。

2.2K20
  • 【云+社区年度正文】Django从入门到精通No.2----模型

    二、模型的定义 模型可以定义储存数据的字段和值,比如我们在进行表单提交的时候,一些注册信息就可以利用模型来进行管理,然后统一提交到数据库。简单来说,模型是与数据库有关的操作集合。...1.多对一 因为是关联关系,所以我们必须指定两个类来进行相互操作,这里涉及到一个的操作,即ForeignKey字段,而且要定义在多的一方。...,提供的条件,字典类型 db_constraint=True # 是否在数据库创建约束 parent_link=False # 在Admin是否显示关联数据...2.多对多 多对多的表,必须设中间关联表,关联表设独立主键,并引入两个“多”头的表的主键作为关联表的。...db_constraint=True # 是否在数据库创建约束 db_table=None # 默认创建第三张表时,数据库中表的名称

    2.1K00

    简单全文搜索

    整个搜索的过程如下: 用户在搜素框输入搜索关键词,假设为 “django”,然后用户点击了搜索按钮提交其输入的结果到服务器。...用户通过表单 get 方法提交的数据 Django 为我们保存在 request.GET 里,这是一个类似于 Python 字典的对象,所以我们使用 get 方法从字典里取出 q 对应的值,即用户的搜索关键词...这里字典的之所以叫 q 是因为我们的表单搜索框 input 的 name 属性的值是 q,如果修改了 name 属性的值,那么这个的名称也要相应修改。...接下来我们做了一个小小的校验,如果用户没有输入搜索关键词而提交了表单,我们就无需执行查询,我们就在模板渲染一个错误提示信息。...在 Pythonzhcn 社区的新手问答版块 发布帖子

    1.9K60

    Django 2.1.7 模板 - CSRF 跨站请求伪造

    python3 manage.py runserver 5)在浏览器输入如下网址,将这个标签称为网站A。...要注意,Django 2 开始开启中间件不是默认生产的MIDDLEWARE_CLASSES编写,需要写到MIDDLEWARE,如下: MIDDLEWARE = ( 'django.contrib.sessions.middleware.SessionMiddleware...{% csrf_token %} 4)回到windows浏览器,在网站A中点击“提交”按钮,效果如下图: 5)回到windows浏览器,在网站B中点击“提交”按钮,效果如下图: 好了,Django成功完成...总结 重要信息如金额、积分等,采用POST方式传递 启用CSRF中间件,默认启用 在form表单post提交时加入标签csrf_token 保护原理 加入标签后,可以查看post.html的源代码,发现多了一个隐藏域...说明:当启用中间件并加入标签csrf_token后,会向客户端浏览器写入一条Cookie信息,这条信息的值与隐藏域input元素的value属性是一致的,提交到服务器后会先由csrf中间件进行验证,如果对比失败则返回

    1.9K20

    Django 3.1 官网学习路线

    字段还可以有各种可选参数;在本例,我们将投票的默认值设置为 0。 最后,请注意使用定义了关系。这告诉 Django 每个选择都与一个问题相关。...按照惯例,Django 会将"_id"附加到外字段名。(是的,你也可以重写这个。) 关系是通过约束来显式的。...不要担心可延期的部分;它告诉 PostgreSQL 在事务结束之前不要强制执行。...之所以要用单独的命令来进行迁移是因为你要将迁移提交到版本控制系统,并与应用一起发布;它们不仅使您的开发更容易,还可用于其他开发人员和生产环境。...“添加选择”表单如下所示: 在该表单,“Question”字段是一个选择框,包含数据库的每个问题。Django 知道一个应该在管理中表示为一个框。在我们的例子,目前只存在一个问题。

    8.2K10

    Django 2.1.7 模板 - CSRF 跨站请求伪造

    python3 manage.py runserver 5)在浏览器输入如下网址,将这个标签称为网站A。...要注意,Django 2 开始开启中间件不是默认生产的MIDDLEWARE_CLASSES编写,需要写到MIDDLEWARE,如下: MIDDLEWARE = ( 'django.contrib.sessions.middleware.SessionMiddleware...{% csrf_token %} 4)回到windows浏览器,在网站A中点击“提交”按钮,效果如下图: 5)回到windows浏览器,在网站B中点击“提交”按钮,效果如下图: 好了,Django...总结 重要信息如金额、积分等,采用POST方式传递 启用CSRF中间件,默认启用 在form表单post提交时加入标签csrf_token 保护原理 加入标签后,可以查看post.html的源代码,发现多了一个隐藏域...说明:当启用中间件并加入标签csrf_token后,会向客户端浏览器写入一条Cookie信息,这条信息的值与隐藏域input元素的value属性是一致的,提交到服务器后会先由csrf中间件进行验证,如果对比失败则返回

    69110

    Django 学习笔记之表单

    表单元素 --> action 属性:指定表单数据提交到哪个页面。例子是提交到 search.html 页面,这个也会跳转到 search.html 页面。...如果你想把数据提交到原来的页面,action 的值为空就行,即 action="" method 属性:规定提交表单时所用的 HTTP 方法,一般选择 GET 或者 POST。...q=monkey 3 Django Form 3.1 功能 Django表单针对 HTML 表单实现了一层封装,这使得 Django 的 Form 表单功能更加强大。...它具有以下功能: 1)自动生成HTML表单元素 2)检查表单数据的合法性 3)如果验证错误,重新显示表单(数据不会重置) 4)数据类型转换(字符类型的数据转换成相应的Python类型) 3.2 Form...而且数据会被自动转换为 Python 对象。如:在 form 定义了 DateTimeField ,那么该字段将被转换为 datetime 类型。

    2.6K30

    Python面试题:Django Web框架基础与进阶

    Django作为Python最流行的Web开发框架之一,其基础知识与进阶技能是许多Python开发者面试的重点。...本篇博客将深入浅出地梳理Django Web框架面试中常见的问题、易错点及应对策略,配以代码示例,助您在面试稳操胜券。...表单与验证:表单类:阐述Django表单类的定义、字段类型、验证规则、绑定数据、清洗数据等过程。自定义验证:演示如何为表单字段添加自定义验证方法,处理复杂验证逻辑。...规避:遵循数据库设计原则,合理使用、多对多关系、索引,避免数据冗余。模板过度嵌套与逻辑混杂:误区:在模板编写过多业务逻辑,导致模板层次过深、可读性差。...Web框架的基础知识、熟练掌握进阶技能、规避常见误区,并结合代码示例展现实践能力,您将在Django相关的Python面试展现出扎实的Web开发功底。

    22610

    基于类的通用视图:ListView 和 DetailView

    在开发网站的过程,有一些视图函数虽然处理的对象不同,但是其大致的代码逻辑是一样的。比如一个博客和一个论坛,通常其首页都是展示一系列的文章列表或者帖子列表。...对处理首页的视图函数来说,虽然其处理的对象一个是文章,另一个是帖子,但是其处理的过程是非常类似的。首先是从数据库取出文章或者帖子列表,然后将这些数据传递给模板并渲染模板。...在 Django URL 模式的配置方式就是通过 url 函数将 URL 和视图函数绑定。...DetailView 除了从数据库获取模型列表的数据,从数据库获取模型的一条记录数据也是常见的需求。比如查看某篇文章的详情,就是从数据库获取这篇文章的记录然后渲染模板。...在 Pythonzhcn 社区的新手问答版块 发布帖子

    2.6K70

    djangoModelForm多表单组合的解决方案

    djangoPython语言快速实现web服务的大杀器,其开发效率可以非常的高!但因为秉承了语言的灵活性,django框架又太灵活,以至于想实现任何功能都有种“条条大路通罗马”的感觉。...告诉django需要在表单创建哪些字段。...此时是不能save的,因为project和address对应的数据库记录还没有创建,所以commit传为False           contract = form.save(commit=False...#按照四条数据库记录的顺序依次的创建(调用save方法)、主键赋到下一条记录的、下一次记录创建(save)           projectAddress = context['projectAddressForm...由于pythondjango过于灵活,都将要求django的开发者们唯有更资深才能写出生产环境下的服务。

    3.4K20

    django_mysql_配置

    在自己数据创建一个djangi_demo create database django_demo default charset=utf8; ---- 定义模型类 1....创建一个新的应用,为booktest,在models.py 文件定义模型类,然后去setting注册应用 python manage.py startapp booktest ?...verbose_name='描述信息') hbook = models.ForeignKey(BookInfo, on_delete=models.CASCADE, verbose_name='图书') # ...null是数据库范畴的概念,blank是表单验证范畴的 5) 一般我用CASCADE 在设置时,需要通过on_delete选项指明主表删除数据时,对于引用表数据如何处理,在django.db.models...包含了可选常量: CASCADE 级联,删除主表数据时连通一起删除外数据 PROTECT 保护,通过抛出ProtectedError异常,来阻止删除主表中被应用的数据 SET_NULL

    1.6K10

    Django实战篇-论坛回帖表单验证

    (一) 论坛的话题创建和回帖,会用到表单渲染和表单验证; 在上一章,设计了论坛的 models 模型层; 需要注意的是,在编写完 models 后,需要将字段都映射到数据库,切换虚拟环境,进入 manage.py...文件的项目路径下,执行 python manage.py makemigrations ,然后再执行 python manage.py migrate,即可将创建好的字段都映射到数据库。...再者,创建好的 Django 项目都会在 settings.py 文件自动配置。 ? (二) 在项目路径的论坛应用中新建 forms.py 文件,用于表单渲染和表单验证; ?...论坛需要用到的表单有两处,一个是创建话题,另一个是回帖。 先导入 话题 Topic 和 回帖 Post 的模型;再将需要用到的表单创建 forms 导入。...from django import forms from .models import Topic, Post Topic 表单 class NewTopicForm(forms.ModelForm)

    68910

    玩了下flask,很轻量级的一个web开发框架

    一样,不过是reverse换成了url_for了,url_for 直接指向需要的url函数名就好了 *** return redirect(url_for(‘python’)) *** flask...,很方便 语法都是和python语法一样的,非常的友好 *** 过滤器也是和django的一样的 | 后面接着过滤器名称就好 {{a}}| supper *** 如果在使用flash闪现消息的时候出现了...*** 首先导入wtf模块 *** from flask_wtf import FlaskForm # 实现表单基类 接着导入form表单控件 from wtforms import StringField...id=db.Column(db.Integer,primary_key=True) name=db.Column(db.String(16),unique=True) # 用上面表的id来表示...role_id=db.Column(db.Integer,db.ForeignKey(‘roles.id’)) # *** orm增删改查 *** db.session.commit(

    1.1K30

    【愚公系列】2022年01月 Python教学课程 40-Django框架之模型属性详解

    文章目录 一、模型类定义 二、模型类迁移 总结 ---- 一、模型类定义 在models.py 文件定义模型类,示例如下: from django.db import models # Create...3) 属性命名限制 不能是python的保留关键字。 不允许使用连续的下划线,这是由django的查询方式决定的。...,默认值是False null是数据库范畴的概念,blank是表单验证范畴的 6) 在设置时,需要通过on_delete选项指明主表删除数据时,对于引用表数据如何处理,在django.db.models...包含了可选常量: CASCADE级联,删除主表数据时连通一起删除外数据 PROTECT保护,通过抛出ProtectedError异常,来阻止删除主表中被应用的数据 SET_NULL设置为NULL...1)生成迁移文件 python manage.py makemigrations 2)同步到数据库 python manage.py migrate 总结 django开发模型类和字段最好在代码里定义在迁移同步到数据库

    1.4K20

    Django 1.10文文档-第一个应用Part7-自定义管理站点

    在这个表单,Question字段是一个select选择框,包含了当前数据库中所有的Question实例。Django在admin站点中,自动地将所有的关系展示为一个select框。...在我们的例子,目前只有一个question对象存在。 请注意图中的绿色加号,它连接到Question模型。每一个包含关系的对象都会有这个绿色加号。...点击它,会弹出一个新增Question的表单,类似Question自己的添加表单。填入相关信息点击保存后,Django自动将该Question保存在数据库,并作为当前Choice的关联对象。...通俗讲就是,新建一个Question并作为当前Choice的。 但是,实话说,这种创建方式的效率不怎么样。...如何找到Django源文件: 在命令行运行下面代码: python -c "import django; print(django.

    3.6K60
    领券