1

次のモデルが与えられた場合、作成できる ManyToMany 関係の数を Key モデルの「count」の値に制限するにはどうすればよいですか?

たとえば、「count」が 2 の場合、そのキーを使用できるのは 2 つのデバイスのみです。

モデル:

class Device(models.Model):
    name = models.CharField(max_length=100, unique=True)

class Key(models.Model):
    key = models.CharField(max_length=100, unique=True)
    count = models.IntegerField(default=1)
    device = models.ManyToManyField(Device, blank=True, null=True)

ユーザーがあまりにも多くのデバイスにキーを追加しようとした場合、または「カウント」を既にキーを使用しているデバイスの数よりも少なくした場合は、例外を発生させる必要があります。デバイスは、任意の数のキーを持つことができます。

(データ入力には管理サイトを使用しています)

4

2 に答える 2

1

この機能は Django フレームワークには組み込まれていませんが、ビュー メソッド内に独自のフィルターを作成できます。

例えば、

MAXKEYS = 3

def addNewKey(request):
  if request.user.is_authenticated():
    deviceRequest = Device.objects.get(pk = request.GET["deviceId"])
    keys = Key.objects.filter(device = deviceRequest)

    if len(keys) < MAXKEYS:
      #add new key reference
    else:
      #return an error or something

  else:
    #return user is not authenticated error message
于 2013-11-08T16:49:45.223 に答える