【问题标题】:Django - transactions in the model?Django - 模型中的事务?
【发布时间】:2010-03-12 03:59:11
【问题描述】:

模型(忽略拼写错误/轻微的语法问题。这只是伪代码):

class SecretModel(models.Model):
    some_unique_field = models.CharField(max_length=25, unique=True)  # Notice this is unique.

class MyModel(models.Model):
    secret_model = models.OneToOneField(SecretModel, editable=False) # Not in the form
    spam = models.CharField(max_length=15)
    foo = models.IntegerField()

    def clean(self):
        SecretModel.objects.create(some_unique_field=self.spam)

现在如果我这样做:

MyModel.objects.create(spam='john', foo='OOPS')  # Obviously foo won't take "OOPS" as it's an IntegerField.
#.... ERROR HERE
MyModel.objects.create(spam='john', foo=5)  # So I try again here.
#... IntegrityError because SecretModel with some_unique_field = 'john'
already exists.

我知道我可以将它放入一个带有请求事务的视图中,但我希望它可以在 Admin 中通过 API 等工作。不仅仅是表单或视图。怎么可能?

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    该部分的标题可能是"Controlling transaction management in views",但您应该阅读该部分中的第一个注意框。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-13
      • 2015-10-31
      • 2021-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-13
      相关资源
      最近更新 更多