Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用clean()方法访问django中form.py中未清理的表单数据_Django_Django Forms - Fatal编程技术网

使用clean()方法访问django中form.py中未清理的表单数据

使用clean()方法访问django中form.py中未清理的表单数据,django,django-forms,Django,Django Forms,我的问题可能不清楚。所以,也请阅读示例。我使用的是python 3.4和django 1.7 我正在从表单选择字段接收外键。未清理的数据为我提供了外来元素的id,但清理的数据为我提供了str(),即外来元素的名称 我希望外部元素的对象通过与窗体的另一个已清理数据进行比较来验证其另一个属性 例如,我有一个包含私钥(CharField)的Institute模型。 现在,我有一个教师模型,其中包含Institute作为ForeignKey,需要在注册期间验证该私钥 注意:private_key是Cha

我的问题可能不清楚。所以,也请阅读示例。我使用的是python 3.4和django 1.7

我正在从表单选择字段接收外键。未清理的数据为我提供了外来元素的id,但清理的数据为我提供了str(),即外来元素的名称

我希望外部元素的对象通过与窗体的另一个已清理数据进行比较来验证其另一个属性

例如,我有一个包含私钥(CharField)的Institute模型。 现在,我有一个教师模型,其中包含Institute作为ForeignKey,需要在注册期间验证该私钥

注意:private_key是CharField类型的变量名

在教师注册表格中,学院将作为外键和一个包含用户输入的私钥的Charfield

我必须检查用户的私钥输入和存储在所选机构模型中的私钥。如果它们不相同,则引发“无效私钥”错误

我在form.py中使用clean()方法(在我有自定义注册表的类中)。但在这里,我只清理了数据。Clean data为我提供了研究所的名称,而不是研究所的id

你怎么能做到

如果我的问题不好,请给出有理由的回答/评论,而不是只说出来。

如果你使用,那么你应该直接得到外键相关的对象。因此,您可以在清理的数据中执行以下操作:

def clean(self):
    p_key= self.cleaned_data['private_key']
    institute= self.cleaned_data['institute']
    if p_key == institute.private_key :
        return super().clean()
    else:
        raise ValidationError('Invalid key')

如果您正在使用,那么您应该在清理后的数据中获取institute id

请提供一些代码片段以清楚地理解您的问题。我无法提供任何代码,因为1)My come非常复杂,因为它在同一视图类中处理许多表单。2) 我必须在我的网站上使用它。它不是一个开源代码或实践代码,我使用的是ModelForm。但是私钥不是我老师模型的一部分。我已经自定义了我的模型表单并插入了一个名为private_key的字符域。函数clean_private_key(self)不适用于我。请问你还有别的解决办法吗?