मैं घोषणात्मक SQLAlchemy का उपयोग कर रहा हूं और मेरे पास तीन मॉडल हैं: Role
, Permission
, और RolePermission
। मेरी Role
मॉडल में, मैं निम्नलिखित है:SQLAlchemy - तालिका में शामिल होने के लिए रिश्ते पर order_by
class Role(Base):
name = Column(u'NAME', VARCHAR(50), nullable=False, unique=True)
permissionLinks = relationship(RolePermission, backref="role", order_by=name)
permissions = relationship(Permission, backref=backref("roles",
order_by=name), secondary=RolePermission.__table__,
order_by=Permission.name)
अब permissions
घोषणा ठीक काम करता है, और एक भूमिका के साथ जुड़े अनुमतियाँ क्रमबद्ध बाहर आने के रूप में मैं (नाम से) की उम्मीद है। हालांकि, permissionLinks
निम्नलिखित त्रुटि के साथ विफल:
sqlalchemy.exc.ProgrammingError: (ProgrammingError) ('42000', '[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]The multi-part identifier "ROLES.NAME" could not be bound. (4104) (SQLExecDirectW); [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) could not be prepared. (8180)') u'SELECT [ROLES_PERMISSIONS].[ROLE_ID] AS [ROLES_PERMISSIONS_ROLE_ID], [ROLES_PERMISSIONS].[PERMISSION_ID] AS [ROLES_PERMISSIONS_PERMISSION_ID], [ROLES_PERMISSIONS].[IS_DENIED] AS [ROLES_PERMISSIONS_IS_DENIED] \nFROM [ROLES_PERMISSIONS] \nWHERE [ROLES_PERMISSIONS].[ROLE_ID] = ? ORDER BY [ROLES].[NAME]' (19,)
समस्या यह है कि Role
शामिल नहीं हुए किया जा रहा है, तो यह नहीं Role.name
द्वारा सॉर्ट कर सकते हैं। मैंने primaryjoin=id == RolePermission.id1
निर्दिष्ट करने का प्रयास किया, लेकिन ऐसा कुछ भी नहीं दिख रहा था। मैं इस रिश्ते में शामिल होने को कैसे निर्दिष्ट कर सकता हूं जैसे कि मैं किसी भी तालिका में शामिल हो सकता हूं (अर्थात्, Role.name
)?
मैं एक दिया अनुमति के साथ जुड़े सभी 'RolePermission' पंक्तियों को प्रदर्शित करना चाहते हैं और मैं उन्हें' Role.name' के क्रम में प्रदर्शित करना चाहते हैं। वर्तमान में मैं उन्हें डीबी से परिणाम प्राप्त करने के बाद क्रमबद्ध करता हूं, लेकिन ऐसा लगता है कि मुझे स्क्लेक्लेमी के साथ ऐसा करने में सक्षम होना चाहिए। मैं 'रोलप्रमिशन' पंक्तियां प्रदर्शित करता हूं न केवल 'अनुमति' पंक्तियां (अनुमतियों के माध्यम से) क्योंकि 'रोलप्रमिशन' में निर्माण तिथि, निर्माता, आदि के बारे में जानकारी है कि 'अनुमति' नहीं है। –
लेकिन आपके नमूना कोड में आप दिए गए _role_ से जुड़े 'रोलप्रमिशन' ऑब्जेक्ट्स को सॉर्ट करने का प्रयास कर रहे हैं। –
दाएं। ऐसा लगता है कि ऐसा करने योग्य होना चाहिए, क्योंकि प्रत्येक 'रोलप्रमिशन' की 'भूमिका' है, तो मैं 'रोल' पर किसी संपत्ति द्वारा 'रोलप्रमिशन' को क्यों नहीं बदल सकता? –