Я попробовал Camelot 10.07.02-c2-4build1 с SQLAlchemy 0.6.4-3 из репозиториев Ubuntu 11.04, и я получаю следующую трассировку стека, когда пытаюсь сослаться на внешний ключ в табличном представлении:
ERROR:camelot.view.model_thread.signal_slot_model_thread:exception caught in model thread while executing get_columns -> QueryTableProxy.setColumns
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/camelot/view/model_thread/signal_slot_model_thread.py", line 31, in execute
result = self._request()
File "/usr/lib/python2.7/dist-packages/camelot/view/proxy/collection_proxy.py", line 272, in get_columns
self._columns = columns_getter()
File "/usr/lib/python2.7/dist-packages/camelot/view/model_thread/__init__.py", line 56, in wrapper
return original_function( *args, **kwargs )
File "/usr/lib/python2.7/dist-packages/camelot/admin/object_admin.py", line 418, in get_columns
for field in self.list_display]
File "/usr/lib/python2.7/dist-packages/camelot/view/model_thread/__init__.py", line 56, in wrapper
return original_function( *args, **kwargs )
File "/usr/lib/python2.7/dist-packages/camelot/view/elixir_admin.py", line 198, in get_field_attributes
foreign_keys = list(property._foreign_keys)
AttributeError: 'RelationshipProperty' object has no attribute '_foreign_keys'
Для моего кода важно следующее:
class Customer(Entity):
name = Field(Unicode(200))
packages = OneToMany("Package")
class Admin(EntityAdmin):
list_display = ['name']
class Package(Entity):
interval_months = Field(Integer)
customer = ManyToOne("Customer")
class Admin(EntityAdmin):
list_display = ['interval_months', 'customers'] # here is the error
Поиск дал мне подсказку в списке рассылки , но я не совсем понимаю, как я могу решить эту проблему.