Re: [Sqlalchemy-tickets] [sqlalchemy] #2808: AssociationProxy should use keywords on create
Brought to you by:
zzzeek
|
From: sqlalchemy <mi...@zz...> - 2013-08-22 08:08:06
|
#2808: AssociationProxy should use keywords on create
-------------------------------------------+-------------------------------
Reporter: schlamar | Owner: zzzeek
Type: enhancement | Status: new
Priority: medium | Milestone: 0.8.xx
Component: ext | Severity: minor - half an
Resolution: | hour
Progress State: needs questions answered | Keywords:
-------------------------------------------+-------------------------------
Comment (by schlamar):
Testcase:
{{{
#!python
from sqlalchemy import Column, Integer, ForeignKey, String
from sqlalchemy.orm import relationship, backref
from sqlalchemy.ext.associationproxy import association_proxy
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
name = Column(String(64))
keywords = association_proxy('user_keywords', 'keyword')
class UserKeyword(Base):
__tablename__ = 'user_keyword'
user_id = Column(Integer, ForeignKey('user.id'), primary_key=True)
keyword_id = Column(Integer, ForeignKey('keyword.id'),
primary_key=True)
# bidirectional attribute/collection of "user"/"user_keywords"
user = relationship(User, backref=backref("user_keywords",
cascade="all, delete-orphan"))
# reference to the "Keyword" object
keyword = relationship("Keyword")
class Keyword(Base):
__tablename__ = 'keyword'
id = Column(Integer, primary_key=True)
keyword = Column(String(64))
user = User(name='log')
for kw in (Keyword(keyword='new_from_blammo'),
Keyword(keyword='its_big')):
user.keywords.append(kw)
}}}
Error:
{{{
$ python sqla_2808.py
Traceback (most recent call last):
File "sqla_2808.py", line 39, in <module>
user.keywords.append(kw)
File
"D:\Projekte\HACS\hacs\packages\sqlalchemy\ext\associationproxy.py", line
567, in append
item = self._create(value)
File
"D:\Projekte\HACS\hacs\packages\sqlalchemy\ext\associationproxy.py", line
494, in _create
return self.creator(value)
TypeError: __init__() takes exactly 1 argument (2 given)
}}}
--
Ticket URL: <http://www.sqlalchemy.org/trac/ticket/2808#comment:5>
sqlalchemy <http://www.sqlalchemy.org/>
The Database Toolkit for Python
|