1

テーブルで配列を使用しようとしていますが、配列にまだ値が含まれていない場合にのみ、配列に値を挿入したいと考えています。ここでのパフォーマンスに最適なアプローチが何であるかはわかりません。

「モデル.py」

class Documents(models.Model):
documentID = models.AutoField(primary_key=True)

class VisibleDocuments(models.Model):
    visibleTo = models.ForeignKey(UserProfile, null=True)
    documents = ListField()

ドキュメントを visibleDocuments に追加するときは、次のようにします。

「views.py」

visibleDocuments.documents.append(document.documentID)
visibleDocuments.save()

ただし、この方法の問題は、リスト内で documentID が重複することです。一意の documentID のみが必要です。Djangoでそれを行う最良の方法は何だろうか? おそらくセットを使用できますか、それともある種のソートされた読み取りアクセスを使用する必要がありますか?

前もって感謝します!

解決策: SetField を使用する

class VisibleDocuments(models.Model):
    visibleTo = models.ForeignKey(UserProfile, null=True)
    documents = SetField()

ビュー.py

visibleDocuments.documents.add(document.documentID)
visibleDocuments.save()

みんなに感謝!

4

2 に答える 2

1

その ListField が djangotoolbox の ListField である場合は、代わりに SetField の使用を検討する必要があります。

于 2013-09-06T20:13:49.340 に答える