我试图限制主题在使用Otree
的表单字段中可以使用的最小字符数。我希望,如果受试者的名字长度小于4个字符,应用程序会向他们显示一个错误,说他们必须写一个更长的单词。
我正在使用len
,但我收到以下错误:
'NoneType' has no len()
有人能帮我找出代码中的错误并帮我修复吗?
这是我的pages.py代码。
class Consentimiento(Page):
form_model = 'player'
form_fields = ['consentimiento', 'consentimienton',]
def consentimiento_error_message(self, value):
print('El nombre es', value)
if len(self.player.consentimiento)) < Constants.number:
return 'Por favor en el campo de nombre debe poner mínimo 4 letras'
这是我的models.py
代码
consentimienton = models.StringField( max_length=50 )
我注意到您的工作示例中有几个错误。
-
len(self.player.consentimiento)
正在检查数据,而不是用户提供的输入。您应该将其替换为len(value)
。(也要注意额外的偏执( -
您使用的是
fieldname_error_message(self,value)
函数。这应该定义为:- 用于字段,而不是页面
- 在您的模型下的
models.py
中,而不是在pages.py
中
所以最终你应该在models.py
中有以下内容:
# Don't forget to define number field in Constants
class Player(BasePlayer):
consentimienton = models.StringField( max_length=50 )
def consentimienton_error_message(self, value):
print('El nombre es', value)
if len(value) < Constants.number:
return 'Por favor en el campo de nombre debe poner mínimo 4 letras'
这个在你的pages.py
:
class Consentimiento(Page):
form_model = 'player'
form_fields = ['consentimienton']