0

したがって、基本的に私のアプリにはもちろんユーザーがいて、各ユーザーは「ModelA」の5つのインスタンスを作成できます。シンプルですが、「ModelA」とユーザーモデルに関連する「ModelB」もあります。ユーザーが合計 15 個の「ModelB」インスタンスを作成できるようにしたいのですが、各「ModelA」インスタンスには 5 つの「ModelB」インスタンスしか関連付けることができませんか?

任意のヒント?

ユーザーごとに 5 つの「ModelA」インスタンスの最初の部分を処理する方法は次のとおりです。

def clean(self):
        new_instance = self.__class__
        if (new_instance.objects.count() > 4):
            raise ValidationError(
                "Users may only create 5 %s." % new_instance.verbose_name_plural
            )
        super(ModelA, self).clean()

ありがとう

編集:(Djangoユーザー機能に組み込まれていると想定)

class ModelB(models.Model):
    user = models.ForeignKey(User)
    modelA = models.ForeignKey('ModelA')
    other_field = models.CharField(max_length=50)

class ModelA(models.Model):
    user = models.ForeignKey(User)
    other_field = models.CharField(max_length=50)

基本的に、ユーザーは 5 つの「ModelA」インスタンスを作成でき、これらのインスタンスごとに 3 つの「ModelB」インスタンスを作成できます。

モデルロジック内でこれを行うにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

これは機能しますか?

class ModelB(models.Model):
  user = models.ForeignKey(User)
  modelA = models.ForeignKey('ModelA', related_name = 'modelbs')
  other_field = models.CharField(max_length=50)

  def clean(self):
    if (self.modelA.modelbs.all().count() > 2):
        raise ValidationError(
            "ModelA may create may only create 3 modelBs "
        )
    super(ModelB, self).clean()


class ModelA(models.Model):
  user = models.ForeignKey(User, related_name = 'modelas')
  other_field = models.CharField(max_length=50)

  def clean(self):
    if (self.user.modelas.all().count() > 2):
        raise ValidationError(
            "User may create may only create 3 modelAs "
        )
    super(ModelA, self).clean()
于 2012-11-15T03:20:09.310 に答える