要点: 我在模型之间有1到多个层次关系
国家/地区(1) - >城市(许多)
城市(1) - >状态(很多)
我有一个表单,打算打印属于所有这些模型的字段,但是当我打印时,我只看到“city”字段,它也显示为下拉列表而不是显示为文本框。我试图寻找这个问题,但没有出现解决方案。
代码摘录:
from google.appengine.ext import db
from google.appengine.ext.db import djangoforms
class UserReportedCountry(db.Model):
#country selected by the user
country_name = db.StringProperty( required=True,
choices=['Afghanistan','Aring land Islands']
)
class UserReportedCity(db.Model):
country = db.ReferenceProperty(UserReportedCountry, collection_name='cities')
city_name = db.StringProperty(required=True)
class UserReportedStatus(db.Model):
city = db.ReferenceProperty(UserReportedCity, collection_name='statuses')
status = db.BooleanProperty(required=True)
date_time = db.DateTimeProperty(auto_now_add=True)
class UserReportedDataForm(djangoforms.ModelForm):
class Meta:
model = UserReportedStatus
exclude = ('status’ )
谢谢,
[EDIT#1]
我偶然发现了这篇文章(how to make dynamically generated forms with one to many relationships in django),并按照提交者在页面上打印表单时使用的方法
A]现在模型类中的表单
class UserCountryForm(djangoforms.ModelForm):
class Meta:
model = UserReportedCountry
class UserCityForm(djangoforms.ModelForm):
class Meta:
model = UserReportedCity
exclude = ('country', )
class UserStatusForm(djangoforms.ModelForm):
class Meta:
model = UserReportedStatus
#hiding the site_is_up property
exclude = ('site_is_up', 'city' )
B]打印这些表格的方法:
def print_user_reporting_form(self):
self.response_variable.out.write('<div id="userDataForm">'
'<form method="POST" '
'action="/UserReporting">'
'<table>' )
#method call to print the pre-populated user form with users country and city value
self.response_variable.out.write (UserCountryForm())
self.response_variable.out.write (UserCityForm())
self.response_variable.out.write(UserStatusForm())
self.response_variable.out.write ( '</table>'
'<input type="submit" name="report_up" value= "Report Up">'
'<input type="submit" name="report_down" value= "Report Down">'
'</form>'
'</div>')
谢谢,
答案 0 :(得分:1)
您的表单输出正确。
城市和州之间存在一对多的关系。
country
__ __ __ __ __ __ __ __ | __ __ __ __ __ __ __
/ | | \
city city city city
__ _|_ __ __ _|_ __ __ _|_ __ __ _|_ __
| | | | | | | | | | | | | | | |
s s s s s s s s s s s s s s s s
您有一个表单,用于创建单个状态和城市之间的链接,您可以重复执行此操作以创建一个城市到多个状态的关系。
下拉列表询问您希望与您的状态关联的城市。
您明确排除了状态字段并记下this
请注意
目前已实施,设定 auto_now或auto_now_add为True将 导致该字段具有editable = False 和空白=真实设置。