use optimized m2m query
remove unneed import
__iter__ method yield collumn name: collumn value
more generic models