3

manytoanyfield に設定されたリレーションが 3 つ以下であることを確認したいと思います。

これを行うためにクリーンな方法を試しました:

if self.tags.count()>3:
  raise ValidationError(_(u'You cannot add more than 3 tags'))

ただしself.tags、現在の更新ではなく、保存されたオブジェクトのみを返します。

それらにアクセスするアイデアはありますか?

ありがとう

4

2 に答える 2

3

これにはいくつかの方法があります。

まず、モデルの save() の一部として実行できます

モデルで、次のようにします。

def save(self):
  # this may not be the correct check... but it will be something like this
  if self.tags.count() > 3: 
    # raise errors here
  else:
    super(MODEL_NAME,self).save()

または、ビューで手動で行うこともできます。

def some_view(request):

  # all the request.POST checking goes here

  the_model = form.save(commit=False)
  if the_model.tags.count() > 3:
    #error stuff
  else:
    the_model.save()
于 2010-04-27T16:16:47.347 に答える
-2

ブラントは正しい。ただし、必要なことを行うためのより良い方法は、1 つの ManyToMany ではなく、3 つの個別の ForeignKey フィールドを使用することだと思います。

于 2010-05-14T00:44:54.453 に答える