【问题标题】:Many to Many Relationship + Google Datastore + Python多对多关系 + Google 数据存储 + Python
【发布时间】:2011-08-30 14:53:44
【问题描述】:

鉴于以下日志:

Restaurant = <persistence.model.Restaurant object at 0x3913c01e89e78a20>
Review Content = This is my first comment...
User[0] = <persistence.model.User object at 0x3913c01e89e780a0>

及以下代码:

class RestaurantReview(db.Model):
    owned_by = db.ReferenceProperty(Restaurant, required=True, collection_name='restaurant')
    written_by = db.ReferenceProperty(User, required=True, collection_name='user')
    content = db.StringProperty(required=True)
    date = db.DateTimeProperty(auto_now_add=True)

当我尝试创建 RestaurantReview 的实例时,它永远无法工作:

RestaurantReview(owned_by=restaurant, written_by=user[0], content=restaurant_review_content.__str__()).put()    

编辑 知道发生了什么吗?它不断抛出我设置的自定义错误。

try:

        RestaurantReview(owned_by=restaurant, written_by=user[0], content=restaurant_review_content.__str__()).put()
    except:
        logging.error('CUSTOM ERROR: Review for restaurant has not been added')

【问题讨论】:

  • @bpgergo,我在上一节中进行了编辑。我自己的显示错误。
  • 先生酷先生,我还是不明白是什么错误。
  • 我的意思是我从 logging.error('CUSTOM ERROR: Review for restaurant has not been added') 中得到了自定义错误,这意味着无法从 try 和除了块?
  • 一个简单的except: 捕获所有内容几乎从来都不是一个好主意,而且绝对不是调试的好主意。在不知道引发的实际异常的情况下,无法判断出了什么问题。
  • 是的,我明白了。您应该重新抛出异常,以便了解可能是什么错误。

标签: google-app-engine google-cloud-datastore


【解决方案1】:

我建议通过调用 raise

重新抛出错误
try:
    RestaurantReview(owned_by=restaurant, written_by=user[0], content=restaurant_review_content.__str__()).put()
except:
    logging.error('CUSTOM ERROR: Review for restaurant has not been added')
    raise

【讨论】:

  • 谢谢@bpgergo!通过 raise,我可以看到返回更好的错误结果,这是未声明对象的粗心错误。希望您不介意回答我的另一个问题,是否需要使用 db.ListProperty(db.Key) ???我阅读了文档,但不清楚。
猜你喜欢
  • 2011-03-17
  • 1970-01-01
  • 2014-08-18
  • 2023-03-16
  • 2020-11-28
  • 2018-07-11
  • 1970-01-01
  • 1970-01-01
  • 2012-04-01
相关资源
最近更新 更多