次のようなモデルがいくつかあります。
class System(models.Model):
'''Defines a system'''
system_desc = models.CharField('System Name', max_length=50)
class SystemGroup(models.Model):
'''Groups within a 'System' (ie. Customers, regions, divisions, etc. '''
group_desc = models.CharField('Group Name',max_length=25)
system = models.ForeignKey(System)
class QueryData(models.Model):
'''Queries related to a 'System' (ie. Active users against System1, Orders today in system2, etc. '''
qry_desc = models.CharField('Query Description', max_length=50)
system = models.ForeignKey(System)
class UserDashboard(models.Model):
'''User specific Dashboard '''
user = models.ForeignKey(User)
board_name = models.CharField('Dashboard Name', max_length=50)
class UserDashboardGroup(models.Model):
'''Groups on the dashboard (ie. 'System 1's Key Indicators', 'System 2's Hot Sheet', etc. '''
group_desc = models.CharField('Group Display Title', max_length=50)
user = models.ForeignKey(User)
dashboard = models.ForeignKey(UserDashboard)
system = models.ForeignKey(System)
system_group = models.ForeignKey(SystemGroup)
class UserGroupQuery(models.Model):
'''Queries that run in a specific group on the dashboard (ie. Within 'System 1's Key Indicators, we run queries for active users today, orders in the last hour, etc. '''
user = models.ForeignKey(User)
dashboard = ChainedForeignKey(UserDashboard, chained_field='user', chained_model_field='user', show_all=False, auto_choose=True)
user_dashboard_group = ChainedForeignKey(UserDashboardGroup, chained_field='dashboard', chained_model_field='dashboard')
query = models.ForeignKey(QueryData)
この最後の部分に問題があります。選択した に基づいて、管理ページに表示される「クエリ」を制限したいuser_dashboard_group
。ただし、現在のモデルに基づいて、これを行う方法がわかりません。query
両方ともuser_dashboard_group
への外部キーを持っていますがSystem
、お互いにはありません。ただし、これを取得するには、 を取得し、それを使用して をフィルタリングする必要がありuser_dashboard_group
ます。これどうやってするの?system
QueryData
編集 私がやりたいことをもう少しうまく説明するために(うまくいけば)写真を追加しています。ステップ 1 で、ユーザーはこのクエリ グループの名前を入力します。このグループは、システム (#2) とシステム内の定義済みグループ (#3) に関連付けられています (#3 を「顧客」または「地域」などと考えてください。#1 と #3 は同じものではありません)。 、似たような名前にもかかわらず)。次に、このインライン フォームで [保存して編集を続行] を選択すると、手順 4 のドロップダウンに上記のフォームの情報が入力されます。ステップ 4 で選択を行ったら、関連するシステムからのデータのみを 5 に入力します。#2にはこの情報が含まれているため、これを行うのはかなり簡単だと思いますが、チェーンがわかりません.
また、 django-smart-selectsを使用していることに言及していないことにも気付きました