save
の方法は正常ですが、毎回データベースを取得するため、パフォーマンスが低下する可能性があります。あなたがモデルのマネージャーでこのコードを使用することができます
try:
YourModel.objects.create(
unique_together_field_1,
unique_together_field_2,
unique_together_field_3,
unique_together_field_4,
...
)
except YourModel.ValidationError:
# update or replace the existing model
EDIT
:
class YourModelManager(models.Manager):
def create(**kwargs):
try:
super(YourModelManager, self).create(**kwargs)
except YourModel.ValidationError:
# handle here the error
# kwargs is a dictionary with the model fields
とであなたがValidationError
を扱う場合は、ニシキヘビ良く、そしてより多くなりますモデル:
class YourModel(models.Model):
unique_together_field_1 = ....
...
class Meta:
unique_together = [...]
objects = YourModelManager()
カスタムマネージャーについてdocsを確認してください。
これはモデル自体になりますか? – thumbtackthief
いいえ、あなたのモデルを作成する場所はどこですか?例えば、「ビュー」の中に –
Gotcha - それは私がいろいろなところでインスタンスを作成すれば、誰かがそのコードを時間。 – thumbtackthief