Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 如何在表单中显示产品名称_Google App Engine_Referenceproperty - Fatal编程技术网

Google app engine 如何在表单中显示产品名称

Google 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,

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,
                                   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')