如何为django on_delete函数设置自定义文本?
我有一个名为“客户端”的模型和另一个名为“信息”的模型。
class Information(models.Model):
client_name = models.ForeignKey(Clients, on_delete=models.SET(get_deleted_client_intance))
从“客户端”模型中删除名称时,我想设置自定义文本。
以下功能创建了一个新名称为“删除”作为新条目,并保存在“客户端”模型中。我不要那个。我想要在其位置上删除它的名称“已删除”或“删除”。
def get_deleted_client_intance():
return Clients.objects.get_or_create(name='deleted')[0]
我该怎么做?
I have a model named 'Clients' and another model named 'Information'.
class Information(models.Model):
client_name = models.ForeignKey(Clients, on_delete=models.SET(get_deleted_client_intance))
I want to set a custom text when a name is deleted from 'Clients' model.
The below function creates a new name 'deleted' as a new entry and is saved in 'Clients' model. I don't want that. I want if I delete a name it says 'deleted' or 'removed' on it's place.
def get_deleted_client_intance():
return Clients.objects.get_or_create(name='deleted')[0]
How can I do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为您对
on_delete
关键字参数有一些误解。根据文档:即,当删除引用对象时,它会处理某些逻辑 - 将字段设置为null(set_null),则限制了是否限制了是否删除是否删除。 级联),或设置您的首选值(set)等。
引用的对象具有子女(protect),删除子对象( 对象您无需在传递给
models.set.set
的可呼叫中执行此操作,最好在对象级别上执行此操作,例如覆盖delete
方法:I think you have a little misunderstanding about
on_delete
keyword argument. According to the docs:I.e. it handles some logic when a referenced object is deleted - sets the field as null (SET_NULL), restricts from removing if the referenced object has children (PROTECT), deletes the child objects as well (CASCADE), or sets your preferred value (SET), etc.
In your case, if you want to change the state of the
Clients
object you don't need to do it in the callable passed tomodels.SET
, you'd better do it on the object level, e.g. override thedelete
method: