Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查所有模型对象的验证。姜戈

检查所有模型对象的验证。姜戈
EN

Stack Overflow用户
提问于 2022-05-17 11:25:26
回答 1查看 59关注 0票数 1
代码语言:javascript
运行
AI代码解释
复制
class Questions(models.Model):
    question = models.CharField(max_length=350)

class AnswerOptions(models.Model):
    answer = models.CharField(max_length=150)
    yesorno = models.BooleanField(default=False)
    question = models.ForeignKey('Questions', 
    on_delete=models.CASCADE)

我是新来的django,希望有任何建议。我真的希望能得到帮助。在我的例子中,如何在管理面板中实现验证?禁止将所有答案标记为不正确,禁止将所有答案标记为正确。在这里,BooleanField字段负责这一点。在admin.py模型中,连接是通过“内联”实现的。

EN

回答 1

Stack Overflow用户

发布于 2022-05-18 05:27:01

您可以与表单集的clean()方法中的主对象一起验证内联对象。为此,您需要为AnswerOptions定义一个自定义窗体集。

以下是您的问题的解决方案:

代码语言:javascript
运行
AI代码解释
复制
from django.contrib import admin
from django.core.exceptions import ValidationError
from django.forms.models import BaseInlineFormSet

from .models import AnswerOptions, Questions


class AnswerOptionsInlineFormSet(BaseInlineFormSet):
    def clean(self):
        super().clean()

        answers_yesno = []
        for form in self.forms:
            if not form.is_valid():
                return  # other errors exist, so don't bother
            if form.cleaned_data and not form.cleaned_data.get("DELETE"):
                answers_yesno.append(form.cleaned_data.get("yesorno"))

        if answers_yesno:  # check only if we have any clean answers
            if all(answers_yesno):
                raise ValidationError("Not every answer can be 'yes'")
            if not any(answers_yesno):
                raise ValidationError("Not every answer can be 'no'")


class AnswerOptionsInline(admin.TabularInline):
    model = AnswerOptions
    formset = AnswerOptionsInlineFormSet


@admin.register(Questions)
class QuestionsAdmin(admin.ModelAdmin):
    inlines = [AnswerOptionsInline]

附加建议:在Django中,在命名模型时使用单数形式是惯例,所以AnswerOptionQuestion会更好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72279650

复制
相关文章
被解放的姜戈05 黑面管家
Django提供一个管理数据库的app,即django.contrib.admin。这是Django最方便的功能之一。通过该app,我们可以直接经由web页面,来管理我们的数据库。这一工具,主要是为网
Vamei
2018/01/18
1.2K0
被解放的姜戈05 黑面管家
被解放的姜戈01 初试天涯
Django是Python下的一款网络服务器框架。Python下有许多款不同的框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。虽然Django之于Pytho
Vamei
2018/01/18
2.8K0
被解放的姜戈01 初试天涯
被解放的姜戈02 庄园疑云
上一回说到,姜戈的江湖初体验:如何架设服务器,如何回复http请求,如何创建App。这一回,我们要走入糖果庄园。 数据库是一所大庄园,藏着各种宝贝。一个没有数据库的网站,所能提供的功能会非常有限。 为
Vamei
2018/01/18
1.7K0
被解放的姜戈02 庄园疑云
被解放的姜戈04 各取所需
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 我们在庄园疑云中讲到了服务器上的数据。当时我们是用手动的方式,直接在数据库插入数
Vamei
2018/01/18
1.2K0
被解放的姜戈04 各取所需
被解放的姜戈03 所谓伊人
在之前的程序中,我们直接生成一个字符串,作为http回复,返回给客户端。这一过程中使用了django.http.HttpResponse()。 在这样的一种回复生成过程中,我们实际上将数据和视图的格式
Vamei
2018/01/18
1K0
被解放的姜戈03 所谓伊人
被解放的姜戈06 假作真时
之前了解了: 创建Django项目 数据库 模板 表格提交 admin管理页面 上面的功能模块允许我们做出一个具有互动性的站点,但无法验证用户的身份。我们这次了解用户验证部分。通过用户验证,我们可以根据用户的身份,提供不同的服务。 一个Web应用的用户验证是它的基本组成部分。我们在使用一个应用时,总是从“登录”开始,到“登出”结束。另一方面,用户验证又和网站安全、数据库安全息息相关。HTTP协议是无状态的,但我们可以利用储存在客户端的cookie或者储存在服务器的session来记录用户的访问。  Djan
Vamei
2018/01/18
1.3K0
被解放的姜戈06 假作真时
被解放的姜戈07 马不停蹄
前面的文章研究了Django最主要的几个方面:数据库,模板,动态生成页面等。但都是使用python manage.py runserver来运行服务器。这是一个实验性的web服务器,不适用于正常的站点运行。我们需要一个可以稳定而持续的服务器。这个服务器负责监听http端口,将收到的请求交给Django处理,将Django的回复发还给客户端。 这样的持续性服务器可以有很多选择,比如apache, Nginx, lighttpd等。这里将使用最常见的apache服务器。服务器和Django之间通过Python的
Vamei
2018/01/18
1.1K0
被解放的姜戈07 马不停蹄
被解放的姜戈08 远走高飞
作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系。  之前在单机上实现了一个Django服务器(被解放的姜戈07 马不停蹄),现在我们可以把这个服务器
Vamei
2018/01/18
6640
被解放的姜戈08 远走高飞
Django之model模型对象验证
当调用模型的full_clean() 方法时,这三个方法都将执行。当使用ModelForm时,is_valid() 将为表单中的所有字段执行这些验证。如果你计划自己处理验证出现的错误,或者你已经将需要验证的字段从ModelForm 中去除掉,你只需调用模型的full_clean() 方法。
菲宇
2019/08/14
1.5K0
检查Python对象
编程环境中的对象很象现实世界中的对象。实际的对象有一定的形状、大小、重量和其它特征。实际的对象还能够对其环境进行响应、与其它对象交互或执行任务。计算机中的对象试图模拟我们身边现实世界中的对象,包括象文档、日程表和业务过程这样的抽象对象。 类似于实际的对象,几个计算机对象可能共享共同的特征,同时保持它们自己相对较小的变异特征。想一想您在书店中看到的书籍。书籍的每个物理副本都可能有污迹、几张破损的书页或唯一的标识号。尽管每本书都是唯一的对象,但都拥有相同标题的每本书都只是原始模板的实例,并保留了原始模板的大
张善友
2018/01/22
1.3K0
让所有代码都经过检查
今天谈论 DevOps 这个话题,所以要先来看下代码检查在DevOps中的位置。下面这张图来自于乔梁老师《持续交付》那本书,一个简单的部署流水线示意图,简化表示了软件开发从代码提交、编译构建、代码检查到各种测试最后发布到用户手中的一个自动化过程。
DevOps时代
2018/12/13
8.3K1
让所有代码都经过检查
戈莱码
194919491949 年,Marcel Golay 给出了四个线性码,分别记为
hotarugali
2022/08/31
7710
戈莱码
戈登·摩尔
相信即便不是技术行业的人也都听说过「摩尔定律」这个词,他是由我们今天要介绍的主人公 戈登·摩尔 首先提出的。
大江小浪
2021/03/09
9010
戈登·摩尔
MindSpore模型验证
在前面一篇博客中,我们介绍了MindSpore在机器学习过程中保存和加载模型的方法。这种将模型存储为静态文件的做法,使得我们可以更灵活的使用训练出来的模型,比如用于各种数据集的验证,或者是迁移学习等场景。
DechinPhy
2021/05/21
1.2K0
ActiveRecord 模型验证
比如:file 验证图片 图片可以为空、类型只能是jpg、png或者gif,最大10M等
友儿
2022/09/11
4050
域名所有权怎么验证
域名所有权怎么验证?百度站长工具、谷歌网站管理员工具(Google Webmaster Tools)、百度统计、360 站长工具等这些应用都要先验证域名所有权,才能继续使用网站管理工具。因为有新手问这个事情,于是写下整个过程,做一个记录,以后需要的时候都用得着。
魏艾斯博客www.vpsss.net
2018/10/25
7.9K1
所有实现IAnimal接口的实例对象
如果我们想要一次性将所有实现了IAnimal接口对象Cry方法的实例全部执行一遍,只能一个对象一个对象的初始化,然后调用cry方法。这样太麻烦,我们可以通过动态创建对象并执行对象的方法来实现这个效果。遴选真题下面,我们将开始动态创建所有实现。第一步,我们需要先获取到所有实现了IAnimal实例对象。现在,我们已经得到了所有实现IAnimal接口的实例对象。讲道理来说,我们就可以用Activator动态创建这些对象了。我们可以使用下面的代码http://lx.gongxuanwang.com/sszt/23.htm
用户7737280
2021/11/27
5370
C++|对象模型|对象模型综述
作为C++的核心单元,对象模型在编译器眼中是如何实现的?本文从几个基本理论模型出发,剖析实际。
朝闻君
2021/11/22
7120
C++|对象模型|对象模型综述
Django的设计哲学
Django 读作姜戈,第一个 D 不发音,与电影《被解救的姜戈》的姜戈除了读音一样,没有其他半毛钱关系。Django 是一个优秀的 Web 框架,用 Python 编写,是非常流行的全栈框架。
somenzz
2020/11/25
2.3K0
点击加载更多

相似问题

所有对象的外键?姜戈

12

模型验证。不想重复我的话。姜戈

30

姜戈。多模型搜索

11

姜戈。用户模型的问题

12

姜戈。覆盖模型的保存

72
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档