Google app engine 如何在表单中显示产品名称
model.pyGoogle app engine 如何在表单中显示产品名称,google-app-engine,referenceproperty,Google App Engine,Referenceproperty,model.py class Product(db.Model): product_name_jp = db.StringProperty(required=True) product_code = db.StringProperty(required=True) class ProductPrice(db.Model): product = db.ReferenceProperty(Product,
class Product(db.Model):
product_name_jp = db.StringProperty(required=True)
product_code = db.StringProperty(required=True)
class ProductPrice(db.Model):
product = db.ReferenceProperty(Product,
collection_name='price_collection')
quantity = db.IntegerProperty()
price = db.IntegerProperty()
forms.py
class ProductPriceForm(forms.Form):
f_product = forms.ModelField(model=Product, default=None, label="Product Name")
f_quantity = forms.TextField("Quantity ", required=True)
f_price = forms.TextField("Price ", required=True)
views.py
def addproductprice(request):
productprice_form = ProductPriceForm()
if request.method =="POST" and productprice_form.validate(request.form):
productprice_form.save()
return render_to_response('myapp/message.html',{'form':productprice_form.as_widget(), 'message':'Insert Produce Price xxx '})
结果是
我的问题:如何显示product_name_jp而不是“myapp.models.product object at xxx”
谢谢在kay.utils.forms.ModelField类下引用:
如果模型类具有\uuuuuunicode\uuuuu()
方法,则此
方法将用于呈现选项标记中的文本。如果
没有\uuuuuuUnicode\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
这个目的
可以通过传递属性来覆盖此行为
用于带有option_name关键字参数的选项标记值的名称
初始化此字段时
这说明您需要在此行中设置选项\u name
关键字
f_product = forms.ModelField(model=Product, default=None, label="Product Name")
它没有很好的文档记录,所以我不能确切地告诉您如何做到这一点,可能是以下之一
f_product = forms.ModelField(model=Product, default=None, label="Product Name", option_name=Product.product_name_jp)
或
或
也许是我建议的以外的东西,我不确定,但你可能会通过尝试一些来发现
编辑:
正如John在评论中提到的,这是一个有效的方法
f_product = forms.ModelField(model=Product, default=None, label="Product Name", option_name='product_name_jp')
ModelField
是如何定义的?我使用的是Kay框架,我不知道什么是ModelField。请查看ModelFielff\u product=forms。ModelField(model=product,default=None,label=“product Name”,option\u Name='product\u Name\u jp')是否正确。谢谢
f_product = forms.ModelField(model=Product, default=None, label="Product Name", option_name=Product._properties['product_name_jp'])
f_product = forms.ModelField(model=Product, default=None, label="Product Name", option_name='product_name_jp')