Python ity=data.save(提交=False) entity.added_by=users.get_current_user() 实体.put() entity=data2.save(commit=False) entity.added_by=users.get_current_user() 实体.put() self.redirect(“/items.html”) 其他: #重印表格 自我。回应。输出。写入(“”) '' '') self.response.out.write(数据) self.response.out.write(数据2) 自我。回应。输出。写入(“”) '' '')

Python ity=data.save(提交=False) entity.added_by=users.get_current_user() 实体.put() entity=data2.save(commit=False) entity.added_by=users.get_current_user() 实体.put() self.redirect(“/items.html”) 其他: #重印表格 自我。回应。输出。写入(“”) '' '') self.response.out.write(数据) self.response.out.write(数据2) 自我。回应。输出。写入(“”) '' ''),python,google-app-engine,Python,Google App Engine,您需要从self.request.POST创建表单类,而不是模型类 它们有一个名为data的参数,而不是data2。我没有使用Django表单,但我的猜测是这样的: def post(self): #print self.request #print self.request.POST data = PhoneNumberForm(data=self.request.POST) data2 = ContactForm(data=self.request.P

您需要从self.request.POST创建表单类,而不是模型类


它们有一个名为data的参数,而不是data2。

我没有使用Django表单,但我的猜测是这样的:

def post(self): 
    #print self.request 
    #print self.request.POST 
    data = PhoneNumberForm(data=self.request.POST) 
    data2 = ContactForm(data=self.request.POST) 
    if data.is_valid() and data2.is_valid(): 
        # Save the data, and redirect to the view page 
        entity = data.save(commit=False) 
        entity.added_by = users.get_current_user() 
        entity.put() 
        entity = data2.save(commit=False) 
        entity.added_by = users.get_current_user() 
        entity.put() 
        self.redirect('/items.html') 
    else: 
        # Reprint the form 
        self.response.out.write('<html><body>' 
                                '<form method="POST" ' 
                                'action="/">' 
                                '<table>') 
        self.response.out.write(data) 
        self.response.out.write(data2) 
        self.response.out.write('</table>' 
                                '<input type="submit">' 
                                '</form></body></html>') 
def post(self): form1 = PhoneNumberForm(self.request.POST or None) form2 = Contact(self.request.POST or None) if form1.is_valid() and form2.is_valid(): form1.save() form2.save() else: # re-display page....
def post(self):
#打印自我请求
#打印self.request.POST
数据=电话号码格式(数据=self.request.POST)
数据2=联系人表单(数据=self.request.POST)
如果data.is\u valid()和data2.is\u valid():
#保存数据,并重定向到查看页面
实体=数据。保存(提交=错误)
entity.added_by=users.get_current_user()
实体.put()
entity=data2.save(commit=False)
entity.added_by=users.get_current_user()
实体.put()
self.redirect(“/items.html”)
其他:
#重印表格
自我。回应。输出。写入(“”)
'' 
'') 
self.response.out.write(数据)
self.response.out.write(数据2)
自我。回应。输出。写入(“”)
'' 
'') 
您需要从self.request.POST创建表单类,而不是模型类


它们有一个名为data的参数,而不是data2。

实际上,您可以稍微简化代码

class Contact(db.Model): name = db.StringProperty() birth_day = db.DateProperty() address = db.PostalAddressProperty() added_by = db.UserProperty(auto_current_user_add=True) class PhoneNumber(db.Model): contact = db.ReferenceProperty(Contact, collection_name='phone_numbers') phone_type = db.StringProperty( choices=('home', 'work', 'fax', 'mobile', 'other')) number = db.PhoneNumberProperty() added_by = db.UserProperty(auto_current_user_add=True) 班级联系方式(db.Model): name=db.StringProperty() 出生日=db.DateProperty() 地址=db.PostalAddressProperty() added\u by=db.UserProperty(auto\u current\u user\u add=True) 类别电话号码(db.Model): contact=db.ReferenceProperty(触点, 集合(名称=”电话号码“) phone_type=db.StringProperty( 选项=(‘家’、‘工作’、‘传真’、‘手机’、‘其他’) number=db.PhoneNumberProperty() added\u by=db.UserProperty(auto\u current\u user\u add=True) 您不需要在表单的保存方法中添加当前用户,您可以让appengine自动添加

在def post(self):函数中,不应该使用data2参数实例化表单,这是无效的。我通常会这样做:

def post(self): 
    #print self.request 
    #print self.request.POST 
    data = PhoneNumberForm(data=self.request.POST) 
    data2 = ContactForm(data=self.request.POST) 
    if data.is_valid() and data2.is_valid(): 
        # Save the data, and redirect to the view page 
        entity = data.save(commit=False) 
        entity.added_by = users.get_current_user() 
        entity.put() 
        entity = data2.save(commit=False) 
        entity.added_by = users.get_current_user() 
        entity.put() 
        self.redirect('/items.html') 
    else: 
        # Reprint the form 
        self.response.out.write('<html><body>' 
                                '<form method="POST" ' 
                                'action="/">' 
                                '<table>') 
        self.response.out.write(data) 
        self.response.out.write(data2) 
        self.response.out.write('</table>' 
                                '<input type="submit">' 
                                '</form></body></html>') 
def post(self): form1 = PhoneNumberForm(self.request.POST or None) form2 = Contact(self.request.POST or None) if form1.is_valid() and form2.is_valid(): form1.save() form2.save() else: # re-display page.... def post(自我): form1=电话号码表单(self.request.POST或None) form2=联系人(self.request.POST或无) 如果form1.is_valid()和form2.is_valid(): 表格1.save() 表格2.save() 其他: #重新显示页面。。。。
您的问题中有两个地方错误地将“data2”传递给表单的构造函数(MainPage类和EditPage类),请确保将它们都更正。

您实际上可以稍微简化代码

class Contact(db.Model): name = db.StringProperty() birth_day = db.DateProperty() address = db.PostalAddressProperty() added_by = db.UserProperty(auto_current_user_add=True) class PhoneNumber(db.Model): contact = db.ReferenceProperty(Contact, collection_name='phone_numbers') phone_type = db.StringProperty( choices=('home', 'work', 'fax', 'mobile', 'other')) number = db.PhoneNumberProperty() added_by = db.UserProperty(auto_current_user_add=True) 班级联系方式(db.Model): name=db.StringProperty() 出生日=db.DateProperty() 地址=db.PostalAddressProperty() added\u by=db.UserProperty(auto\u current\u user\u add=True) 类别电话号码(db.Model): contact=db.ReferenceProperty(触点, 集合(名称=”电话号码“) phone_type=db.StringProperty( 选项=(‘家’、‘工作’、‘传真’、‘手机’、‘其他’) number=db.PhoneNumberProperty() added\u by=db.UserProperty(auto\u current\u user\u add=True) 您不需要在表单的保存方法中添加当前用户,您可以让appengine自动添加

在def post(self):函数中,不应该使用data2参数实例化表单,这是无效的。我通常会这样做:

def post(self): 
    #print self.request 
    #print self.request.POST 
    data = PhoneNumberForm(data=self.request.POST) 
    data2 = ContactForm(data=self.request.POST) 
    if data.is_valid() and data2.is_valid(): 
        # Save the data, and redirect to the view page 
        entity = data.save(commit=False) 
        entity.added_by = users.get_current_user() 
        entity.put() 
        entity = data2.save(commit=False) 
        entity.added_by = users.get_current_user() 
        entity.put() 
        self.redirect('/items.html') 
    else: 
        # Reprint the form 
        self.response.out.write('<html><body>' 
                                '<form method="POST" ' 
                                'action="/">' 
                                '<table>') 
        self.response.out.write(data) 
        self.response.out.write(data2) 
        self.response.out.write('</table>' 
                                '<input type="submit">' 
                                '</form></body></html>') 
def post(self): form1 = PhoneNumberForm(self.request.POST or None) form2 = Contact(self.request.POST or None) if form1.is_valid() and form2.is_valid(): form1.save() form2.save() else: # re-display page.... def post(自我): form1=电话号码表单(self.request.POST或None) form2=联系人(self.request.POST或无) 如果form1.is_valid()和form2.is_valid(): 表格1.save() 表格2.save() 其他: #重新显示页面。。。。
您的问题中有两个地方错误地将“data2”传递给表单的构造函数(MainPage类和EditPage类),请务必同时更正它们。

这似乎对我有效

改变

data = PhoneNumber(data=self.request.POST)
data2 = Contact(data=self.request.POST)


def post(self):
#打印自我请求
#打印self.request.POST
数据=电话号码格式(数据=self.request.POST)
数据2=联系人表单(数据=self.request.POST)
如果data.is_有效():
#保存数据,并重定向到查看页面
实体=数据。保存(提交=错误)
entity.added_by=users.get_current_user()
实体.put()
self.redirect(“/items.html”)
如果data2.is_有效():
#保存数据,并重定向到查看页面
entity=data2.save(commit=False)
entity.added_by=users.get_current_user()
实体.put()
self.redirect(“/items.html”)
其他:
#重印表格
自我。回应。输出。写入(“”)
''
'')
self.response.out.write(数据)
self.response.out.write(数据2)
自我。回应。输出。写入(“”)
''
'')

这似乎对我有效

改变

data = PhoneNumber(data=self.request.POST)
data2 = Contact(data=self.request.POST)


def post(self):
#打印自我请求
#打印self.request.POST
数据=电话号码格式(数据=self.request.POST)
数据2=联系人表单(数据=self.request.POST)
如果data.is_有效():
#保存数据,并重定向到查看页面
实体=数据。保存(提交=错误)
entity.added_by=users.get_current_user()
实体.put()
self.redirect(“/items.html”)
如果data2.is_有效():
#保存数据,然后重新录制