gpt4 book ai didi

flask - 使 WTForms 从数据库模型设置字段标签

转载 作者:行者123 更新时间:2023-12-03 15:51:32 25 4
gpt4 key购买 nike

我有三个表:components、attributes 和attribute_values。每个组件可以有许多attribute_values。每个attribute_value 属于一个属性。是的,这是可怕的 EAV 模式...

我创建了这两种形式:

class AttributeValueForm(Form):
attribute = HiddenField()
value = StringField('Value')

class ComponentForm(Form):
... non-related fields left out ...
attribute_values = FieldList(FormField(AttributeValueForm))

这些是 SQLAlchemy 模型:
class Component(db.Model):
__tablename__ = 'components'
id = db.Column(db.Integer, primary_key=True)
... non-related columns left out ...

class AttributeValue(db.Model):
__tablename__ = 'attribute_values'
id = db.Column(db.Integer, primary_key=True)
value = db.Column(db.String)

attribute_id = db.Column(db.Integer, db.ForeignKey('attributes.id'))
attribute = db.relationship('Attribute', backref='attribute_values'))

component_id = db.Column(db.Integer, db.ForeignKey('components.id'))
component = db.relationship('Component', backref='attribute_values'))

def Attribute(db.Model):
__tablename__ = 'attributes'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(60))

我的问题是我希望将属性名称视为值字段的标签(替换“值”)。我一直试图围绕 WTForms 在内部如何工作,但我看不到任何明显的方法来做到这一点。

任何提示表示赞赏。如果我只能在渲染值字段时获取 AttributeValue 对象,我什至可以使用仅渲染自定义标签的 hack。

最佳答案

好的,所以我想出了一个解决方案,这有点类似于 adarsh 对他的回答的第二条评论,但覆盖了 初始化 FormField 使用的表单的:

class AttributeValueForm(Form):
value = StringField('Unnamed attribute')

def __init__(self, *args, **kwargs):
super(AttributeValueForm, self).__init__(*args, **kwargs)
if 'obj' in kwargs and kwargs['obj'] is not None:
self.value.label.text = kwargs['obj'].attribute.name

关于flask - 使 WTForms 从数据库模型设置字段标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29378241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com