gpt4 book ai didi

python - 使用 Django admin 复制模型

转载 作者:行者123 更新时间:2023-11-28 19:28:40 24 4
gpt4 key购买 nike

对于特定模型,我使用 Django 管理界面。我实现了自定义验证(干净的方法)和保存方法。

所以,我有这样的东西:

class DailyActivitiesAdmin(admin.ModelAdmin):
form= MyCustomFormForm

def save_model(self, request, obj, form, change):
.... my custom save ....

class MyCustomFormForm(forms.ModelForm):

....
def clean(self):
... my custom validation ...

def clean_my_field(self):
... my custom field validation ...

我的问题是:

我是否需要显式管理从验证到保存模型的事务,或者原子性已经在 Django 管理中管理?

我的一位客户向我报告了一个关于它的错误:

在我的干净验证中,我实现了一项检查以避免类似的模型;有时他可以复制模型。我认为他可能更多地点击了保存按钮,并且可能他的互联网连接速度很慢。

这是一种可能的情况吗?我可以作废吗?例如,我可以在保存请求期间禁用保存按钮吗?

如果尚未管理原子性,我能否以某种方式保证原子性?

PS:我使用 Python 3、Djnago 2 和 Postgres

最佳答案

您必须显式地阻止行更新。使用 transaction.atomic()select_for_update()。这是一个例子:

@transaction.atomic
def update_bank_account():
# Another call to update_bank_account will block until the first one is finished
account = BankAccount.objects.select_for_update().get(id=123)
sleep(120)
account.usd += 100
account.save()

文档:

关于python - 使用 Django admin 复制模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55152447/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com