我正在使用GAE发送邮件 - 但我不希望邮件的发件人得到邮件的傻瓜.至于现在,当用户发送邮件时,他收到一封邮件,说他向某人和发送邮件的正文发送邮件,我该如何禁用?
可以在GAE/J上部署同一应用程序的多个版本,但是GAE/J如何处理不同版本可以使用不同数据存储(以及可能不兼容)的方案的事实?
例:
假设在我的应用程序的第1版中我有一个POJO(为了简单起见,我省略了几个细节):
public class User {
private String key;
private String username;
private Integer phoneNumber;
}
Run Code Online (Sandbox Code Playgroud)
现在假设我想在版本2上使用:
public class User {
private String key;
private String username;
// on this version, replaced 'phoneNumber' by:
private String eMail;
}
Run Code Online (Sandbox Code Playgroud)
现在有两个问题:
如果我部署两个版本的GAE/J,我会在数据存储中看到什么模式?
那数据本身呢?如果我在版本2上添加用户,我会在版本1的数据存储上看到它的数据吗?
我正在使用Java(GAE/J)在Google AppEngine上构建应用程序,我的所有数据都将存储在Google DataStore中.现在,如果我想保存一些二进制文件,让我们说图像(JPG,PNG等),DOC,TXT,视频文件如何处理这些?或者,如果我想流式传输视频文件(SWF)我应该在哪里以及如何存储这些文件,当我重新部署我的应用程序时,我不会丢失任何数据.
所以,我正在使用谷歌数据存储区为我的GWT应用程序,我的同事想出了一个有趣的问题,我没有答案.删除某些对象时,该组键会发生什么变化?
例如,
Person.java
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Person {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent
private Set<Key> favoriteFoods;
// ...
}
Run Code Online (Sandbox Code Playgroud)
如果我从数据存储中删除一些favoriteFood对象会发生什么?该对象的密钥是否保留在密钥集中?我有责任从套装中取出钥匙吗?
我可以看到如何将远程数据存储区下载到本地,以及如何将CSV上传到远程应用程序引擎服务器,如下所示:
但有没有办法将我的本地数据导出到为远程上传脚本做好准备的CSV?当然我可以写一个自定义导出器,但是没有办法自动化这个过程吗?
我目前正在使用带有Google App Engine的Django表单,我有一个模型如下:
class Menu(db.Model):
name = db.StringProperty(required=True)
is_special = db.BooleanProperty()
menu_items = db.ListProperty(MenuItem)
Run Code Online (Sandbox Code Playgroud)
我有一个MenuForm,如下所示:
class MenuForm(djangoforms.ModelForm):
class Meta:
model = Menu
exclude = ['added_by','menu_items']
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我收到以下错误:
Exception Type: ValueError
Exception Value: Item type MenuItem is not acceptable
Run Code Online (Sandbox Code Playgroud)
我想创建表单并省略menu_items属性,因为我不认为有多个选项的内置控件,如一组复选框.无论哪种方式,我无法理解排除项目中的此属性为什么它会抛出此错误.
TIA
安德鲁
我正在撰写的一些Google App Engine代码出现了一个奇怪的错误.
我的程序包含一些这样的代码:
import datetime
...
class Action(db.Model):
visibleDate = db.DateTimeProperty()
...
getActionQuery = Action.gql("WHERE user = :user AND __key__ = :key", user = user, key = self.request.get("key"))
theAction = getActionQuery.get()
....
theAction.visibleDate = datetime.datetime.strptime(self.request.get("visibleDate"), "%Y/%m/%d")
Run Code Online (Sandbox Code Playgroud)
然而,这会产生以下错误:
Traceback (most recent call last):
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/webapp/__init__.py", line 509, in __call__
handler.post(*groups)
File "/Users/redbird/Developer/betterdo-it/main.py", line 132, in post
theAction.visibleDate = datetime.datetime.strptime(self.request.get("visibleDate"), "%Y/%m/%d"),
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/db/__init__.py", line 472, in __set__
value = self.validate(value)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/db/__init__.py", line 2308, in validate
(self.name, self.data_type.__name__))
BadValueError: Property visibleDate … 我有一个(GoogleAppEngine)Django ModelForm:
class A(db.Model):
a = db.StringProperty()
class MyAForm(djangoforms.ModelForm):
class Meta:
model = A
Run Code Online (Sandbox Code Playgroud)
这将创建一个具有一个字符串字段的表单a.在我的表格中,我想称之为别的,比方说b.所以我想要一个带有字段b的表单,当表单被POST时,我们创建一个新的A实体,其a属性填充-value b.
有没有一个简洁的方法来做这个管道?
(ps我不想改变底层模型)
我正在尝试测试Google App Engine数据存储区数据库的效率.我想知道查询大型数据集的速度有多快.从大到大,我的意思是5-10mil同类的实体.
devserver只允许我输入1000个相同类型的实体.有没有办法达到这个限制?谢谢
假设我有
class Foo(db.Model):
bar = db.ReferenceProperty(Bar)
foo = Foo.all().get()
Run Code Online (Sandbox Code Playgroud)
有没有办法让我在没有查询数据存储的情况下执行foo.bar?该文档说foo.bar会的一个实例Key,所以我希望能够做的foo.bar.id()和能够得到id的Bar是与相关的foo,但它似乎并没有这样的.
PS:我所指的文档部分可以在这里找到:
它说:
"应用程序可以显式地db.get()ReferenceProperty(它是一个Key)的值来测试引用的实体是否存在."