用单词本身的长度比较单词时没有错误



我试图限制主题在使用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']

最新更新