【问题标题】:Django Forms: How to reference existing object field values in form validation?Django Forms:如何在表单验证中引用现有对象字段值?
【发布时间】:2018-08-21 05:03:41
【问题描述】:

所以我正在创建一个 Django 应用程序,我希望它会在我的学校中使用。这意味着我拥有教师和学生用户,以及这些帐户的不同权限。我已经设置了它,以便每个帐户都有一个 self.teacher 属性,它是一个布尔值。因此,对于学生帐户,self.teacher 将为 False,而对于教师帐户,self.teacher 将为 True。

我的应用还包含一个个人资料页面,该页面具有编辑个人资料功能。在我的应用程序中,我希望用户能够编辑他们的成绩等。现在,我已设置好成绩,可以选择以下选项: - 10 - 11 - 12 - 不适用 学生只能选择一个数字,而教师可以选择 N/A。所以我想要一个表单验证(验证成绩字段)来检查提交表单的用户是否是学生,如果是,检查他们是否没有选择 N/A。如果他们选择了 N/A,验证应该会引发错误。

关于如何使用 Django Forms 实现这一点有什么想法吗?

【问题讨论】:

  • Django auth 应用程序附带组。您可以使用它为教师和学生设置不同的权限。虽然您可能需要从头开始构建组/权限,但我强烈建议您使用 Django 已经为您完成的工作。你可以在这里阅读更多信息:docs.djangoproject.com/en/2.0/topics/auth

标签: django validation django-forms


【解决方案1】:

如果您不希望学生选择给定值(此处为“N/A”),最好的方法是从选择列表中删除该值。在表单的__init__ 方法中,检查表单实例是否为学生,如果是,则从选择列表中删除“N/A”值。

【讨论】:

  • 您能否更具体地了解我如何检查 init 方法?如何在 __init__ 方法中引用对象的 .teacher 字段?提前谢谢你:)
  • 如果您希望我说得更具体一些,请提供您的表单代码,让您自己更加详细。
猜你喜欢
  • 2020-12-22
  • 1970-01-01
  • 2015-08-06
  • 2014-10-10
  • 1970-01-01
  • 1970-01-01
  • 2019-12-04
  • 1970-01-01
  • 2020-01-27
相关资源
最近更新 更多