Django的自定义模型字段方法to_python何时获取除实例之外的任何内容?

时间:2012-06-20 19:27:13

标签: django django-models

来自documentation for to_python

  

作为一般规则,[to_python]应优雅地处理以下任何参数:

     
      
  • 正确类型的实例(例如,我们正在进行的示例中的Hand)。
  •   
  • 字符串(例如,来自解串器)。
  •   
  • 无论数据库返回的是您正在使用的列类型。
  •   

我正在查看我的测试覆盖率(使用coverage.py),以及to_python顶部的代码:

def to_python(self, value):
    if isinstance(value, Hand):
        return value

    # More code for handling strings below (I never get here)

是我调用的to_python方法的唯一位。我还应该测试什么?我已经测试了从数据库中保存和检索对象,我测试了这样的序列化:

   cereal = serializers.serialize('json',
                                   Hand.objects.all())
   objects = list(serializers.deserialize("json", cereal))

1 个答案:

答案 0 :(得分:0)

我发现to_python最终会出现一个不是实例的地方的地方 - 在未提供该值的情况下(例如,如果您的字段设置为允许为null)。在这种情况下,因为我严重执行了get_prep_valueto_python传递了一个包含None的字符串。