擅长:python、mysql、java
<p><em>N.B.</em>:db模块早已被ndb模块取代。db已经好几年没有收到任何重要的更新了。我真的建议更新,如果可能的话,但尽管如此,这里有一些想法来解决它。你知道吗</p>
<p>正如您所确定的,<code>Email</code>类不允许空值。这里最简单的方法可能就是定义自己的类型类和属性类来代替<code>EmailProperty</code>:</p>
<pre><code> from google.appengine.ext import db
class EmailOrNone(datastore_types.Email):
def __init__(self, email):
super(EmailOrNone, self).__init__(email)
ValidateString(email, 'email', empty_ok=True)
class EmailOrNoneProperty(db.EmailProperty):
data_type = EmailOrNone
</code></pre>
<p>然后用新的<code>EmailOrNoneProperty</code>代替<code>EmailProperty</code>。你知道吗</p>
<p>您也可以只使用<code>StringProperty</code>和<a href="https://cloud.google.com/appengine/docs/python/datastore/propertyclass" rel="nofollow">custom validator</a>。你知道吗</p>
<p><em>免责声明</em>:我没有测试过这段代码,但是这个想法是正确的。你知道吗</p>