私は次のモデルを持っています:
class Device(models.Model):
device_name = models.CharField(max_length=50L, blank=True)
hostname = models.CharField(max_length=255L, blank=True)
ip = models.CharField(max_length=255L, blank=True)
vendor = models.CharField(max_length=255L, blank=True)
model = models.CharField(max_length=255L, blank=True)
town = models.CharField(max_length=255L, blank=True)
...
class Group(models.Model):
device = models.ManyToManyField(Device)
group_name = models.CharField(max_length=255L, blank=True, unique=True)
デバイス テーブルには 30000 を超えるレコードが含まれており、グループには 5000、10000、およびそれ以上のデバイスを保持できます。
する必要がある:
- デバイスをグループに追加します。
- グループの内容を表示する。
- グループ全体の編集 (デバイスの削除)。
標準ツール ( filter_horizontal
、インライン、raw_id_fields
) は適切ではありません。フォームの編集Group
は、すべてのデバイス レコードを取得するため、動作が非常に遅いためです。必要なデバイスを選択するには、より多くの情報 (モデル、メーカー、場所など) が必要です。グループから必要なデバイスを削除するには、30000 デバイスのリストをスクロールするか、グループ内の 7000 デバイスをスクロールして CTRL キーを使用して削除する必要があります。この方法は適用されません。
グループにデバイスを追加する際の問題 デバイスにカスタム アクションを追加することで解決しました (を使用してlist_filter
、search_fields
正しい結果が得られたら、「グループに追加」アクションを実行します)。
私が見つけていない残りの問題。
この方法で問題を解決したい: ユーザーがグループに入り、グループのタイトルが表示されます。グループの名前をクリックすると、そのグループに属するデバイスのリストが、すべてのデバイス フィールドを含むテーブルとして表示されます。
これはどのように達成できますか?