特定のクラスのインスタンス数を制限したい。私はすでにいくつかのHTMLを使ってそれを制限していましたが、もし誰かが卑劣な形でフォームへのリンクを再利用すると、別のインスタンスを作ることができます。Django - すべてのユーザのモデルのインスタンス数を制限する
だから私のviews.pyに、私は、クエリ私のHTMLテンプレートで
qry_models = Model.objects.filter(owner=request.user)
が、私はすでに複数のインスタンスを防止するための調整を行ってください。存在しない場合は、ModelFormにリダイレクトされてインスタンスが作成されます。クエリにモデルがある場合は、表示/使用可能です。
しかし、誰かがリンクを再利用した場合、最初にリダイレクトされると、別のインスタンスを作成できます。それは防止されるべきである。
各ユーザーアカウントごとに1つのインスタンスが必要です。 Limit number of model instances to be createdに従うと、アクティブ/ログインしたアカウントのインスタンスだけでなく、すべてのインスタンスからすべてのインスタンスを照会するので、常にMultipleObjectsReturnedというエラーが発生します。
編集: すでにインスタンスがある場合は、常に私をリダイレクトする別のクエリを作成しました。しかし、その優れたコード設計や有用な論理サークルですか? Djangoでのユーザのためのインスタンスを制限する
def model_new(request):
mymodel = Model.objects.filter(owner=request.user)
counter = mymodel.count()
if counter >0:
return HttpResponseRedirect('somewhere')
if request.method != 'POST':
form = ModelForm()
....
どうすれば管理者で防ぐことができますか? –
あなたのモデルはどのように見えますか? 'OwnKey'フィールドを' ForeignKey'ではなく 'OneToOneField'として定義することをお勧めします。 – Selcuk
制限はありますか? 1つのインスタンス、またはその他の番号? – Chris