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
Python django模型-有条件地设置为空白=真_Python_Django_Django Models - Fatal编程技术网

Python django模型-有条件地设置为空白=真

Python django模型-有条件地设置为空白=真,python,django,django-models,Python,Django,Django Models,我试图建立一个应用程序,用户可以自定义表单。下面的示例包含用于创建字段的类QuestionField、AnswerField(由管理员使用)和BoolAnswer(由用户填写):通过这种方式,管理员可以创建包含问题和可能答案的表单 根据django文档,blank=True与评估相关。问题是它是在类级别而不是对象级别上设置的 如何根据相关模型设置blank=True,这样我就不必重新实现自己的验证器了?请参阅BoolAnswer中的伪代码 My models.py: **简要说明**: 如果Bo

我试图建立一个应用程序,用户可以自定义表单。下面的示例包含用于创建字段的类QuestionField、AnswerField(由管理员使用)和BoolAnswer(由用户填写):通过这种方式,管理员可以创建包含问题和可能答案的表单

根据django文档,blank=True与评估相关。问题是它是在类级别而不是对象级别上设置的

如何根据相关模型设置blank=True,这样我就不必重新实现自己的验证器了?请参阅BoolAnswer中的伪代码

My models.py:

**简要说明**:
如果BoolAnswerField问题的答案是正确的,如果True field应该解释,为什么不恨我,但验证是一条路,请参阅

如果希望错误消息显示在字段旁边,而不是表单的开头,则必须将dict传递给ValidationError,如:


别恨我,但验证是一条路,明白吗

如果希望错误消息显示在字段旁边,而不是表单的开头,则必须将dict传递给ValidationError,如:


我认为你是对的,只是认为我需要在表单级别上进行自定义验证。我认为你是对的,只是认为我需要在表单级别上进行自定义验证。
class QuestionField(models.Model):
    question = models.TextField(max_length=200)
    models.ForeignKey(Sheet)


class BoolAnswerField(AnswerField):
    question = models.ForeignKey(models.Model)
    if_true_field = models.TextField(max_length=100, null=True)


class BoolAnswer(models.Model):
    bool_answer_field = models.ForeignKey(BoolAnswerField)
    result = models.BooleanField()
    if_true = models.TextField(max_length=100, null=True,

                               blank=True if self.bool_answer_field.if_true_field)
class BoolAnswer(models.Model):
    bool_answer_field = models.ForeignKey(BoolAnswerField)
    result = models.BooleanField()
    if_true = models.TextField(max_length=100, null=True, blank=True)

    def clean(self)
        if self.bool_answer_field.if_true_field and not self.if_true:
            raise ValidationError('BAF is True without a reason')
from django.utils.translation import gettext_lazy as _
...
raise ValidationError({
    'field_name': _('This field is required.')})