manytoanyfield に設定されたリレーションが 3 つ以下であることを確認したいと思います。
これを行うためにクリーンな方法を試しました:
if self.tags.count()>3:
raise ValidationError(_(u'You cannot add more than 3 tags'))
ただしself.tags
、現在の更新ではなく、保存されたオブジェクトのみを返します。
それらにアクセスするアイデアはありますか?
ありがとう
manytoanyfield に設定されたリレーションが 3 つ以下であることを確認したいと思います。
これを行うためにクリーンな方法を試しました:
if self.tags.count()>3:
raise ValidationError(_(u'You cannot add more than 3 tags'))
ただしself.tags
、現在の更新ではなく、保存されたオブジェクトのみを返します。
それらにアクセスするアイデアはありますか?
ありがとう
これにはいくつかの方法があります。
まず、モデルの 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()
ブラントは正しい。ただし、必要なことを行うためのより良い方法は、1 つの ManyToMany ではなく、3 つの個別の ForeignKey フィールドを使用することだと思います。