草庐IT

多对多

全部标签

python - 使用 Flask、WTForm、SQLAlchemy 和 Jinja2 的完整多对一示例

这是我的HTML下拉菜单。该值为子表的主键。CategoryNumberOneCategoryNumberTwo我需要将Post.category_id的值更新为整数1而不是“类别编号一”。这是我的代码。#createnewpost@app.route('/admin/post',methods=['GET','POST'])@login_required#RequiredforFlask-Securitydefcreate_post():form=PostForm()ifform.validate_on_submit():post=Post(title=form.title.data

python - SQLAlchemy 多对多孤儿删除

我正在尝试使用SQLAlchemy来实现一个基本的用户组模型,其中用户可以有多个组,而组可以有多个用户。当一个组变空时,我希望删除该组(以及与该组相关的其他内容。幸运的是,SQLAlchemy的级联在这些更简单的情况下工作得很好)。问题是cascade='all,delete-orphan'并不完全符合我的要求;它不会在群组变空时删除群组,而是在任何成员离开群组时删除群组。将触发器添加到数据库可以很好地删除一个组,当它变空时,除了触发器似乎绕过了SQLAlchemy的级联处理,所以与组相关的东西不会被删除。当群组的所有成员都离开时删除群组的最佳方法是什么,并且此删除会级联到相关实体。我

python - 过滤SQLAlchemy查询结果对象的一对多属性

假设我有几个对象,有一对多的关系,比如classParent()://id,othercols,etcchildren=relationship("Child",backref="parent")classChild():parent_id=Column(Integer,ForeignKey("parent.id")child_type=Column(Enum("a","b"))现在,我想查询Parent对象,但是让他们的child通过child_type过滤,例如session.query(Parent).join(Parent.children).filter(Child.chil

python - ndb 中的多对多关系

尝试与ndb建立多对多关系模型。谁能举出一个很好的例子来说明如何做到这一点?这是我目前拥有的示例:classPerson(ndb.Model):guilds=ndb.KeyProperty(kind="Guild",repeated=True)classGuild(ndb.Model)members=ndb.KeyProperty(kind="Person",repeated=True)defadd_person(self,person):self.members.append(person.key)self.put()person.guilds.append(self.key)per

python - Django:在管理界面中显示多对多项目的列表

这可能是一个简单的问题,但我似乎无法理解。我在models.py中有两个简单的模型:服务和主机。Host.services与Service具有m2m关系。也就是说,一台主机有多个服务,一个服务可以驻留在多台主机上;一个基本的m2m。模型.pyclassService(models.Model):servicename=models.CharField(max_length=50)def__unicode__(self):returnself.servicenameclassAdmin:passclassHost(models.Model):#...hostname=models.Cha

python - 使用 Python 对多部分电子邮件进行 PGP 签名

我目前正在尝试将PGP签名支持添加到mysmalle-mailsendingscript(使用Python3.x和python-gnupg模块)。签名消息的代码是:gpg=gnupg.GPG()basetext=basemsg.as_string().replace('\n','\r\n')signature=str(gpg.sign(basetext,detach=True))ifsignature:signmsg=messageFromSignature(signature)msg=MIMEMultipart(_subtype="signed",micalg="pgp-sha1",

python - Django一对多表单

假设我有两个模型:A和B。A与B具有一对多关系,即一个A可以有多个B。如果我正确配置管理员,我可以看到属于A的B并动态添加它们,而无需刷新网站。我有一个“添加更多”按钮,我可以在一些A中创建许多B。现在我正在寻找使用标准View和模板做同样事情的示例。有什么建议吗? 最佳答案 正如其他人所指出的,您需要为您的View创建一个内联表单集。管理中使用的JS基于此项目:https://github.com/elo80ka/django-dynamic-formset.它最近没有看到很多更新,但这里有示例和一些使用文档:https://gi

Python 的 SQLAlchemy 不会清除辅助(多对多)表?

User和Task之间存在多对多关系。我希望在删除Task或User时清除“辅助表”(意思是促进多对多关系的表)。我如何为此配置SQLAlchemy?这是一些示例python代码,它演示了我遇到的问题。注意:这段代码是完全独立的,只需要sqlalchemy模块。如果您复制并粘贴此代码,您应该能够在没有任何副作用的情况下运行它,并且您自己会看到相同的行为。脚本的最后一行显示,当我删除相应的任务时,“辅助表”中的相关行并没有被删除。本例中所有断言均通过。fromsqlalchemyimportcreate_engine,Column,Integer,Text,Table,ForeignKe

python - 如何在 flask-sqlalchemy 中建立三向多对多关系

在flask-sqlalchemy中设计三向多对多的正确方法是什么?假设我有用户、团队和角色。用户被分配到团队。当分配给一个团队时,用户也会在该团队中分配一个角色。frommyappimportdbclassUser(db.Model):id=db.Column(db.Integer,primary_key=True)name=db.Column(db.String(128),unique=True)def__init__(self,name):self.name=namedef__repr__(self):return""%self.nameclassTeam(db.Model):i

python - 查询django模板中的多对多字段

这可能不相关,但只是想问一下,如果对象从View传递到模板并且在模板中我将能够查询许多对许多字段模型代码:classInfo(models.Model):xls_answer=models.TextField(null=True,blank=True)classUpload(models.Model):access=models.IntegerField()info=models.ManyToManyField(Info)time=models.CharField(max_length=8,null=True,blank=True)error_flag=models.IntegerFi