TypeError: on_delete must be callable.
时间: 2024-03-27 12:35:33 浏览: 207
这个错误通常出现在 Django 中定义模型的时候,该模型的外键或一对一字段中的 on_delete 参数没有被正确地设置为一个可调用对象。
在 Django 中,当一个模型实例被删除时,与该实例相关联的外键或一对一字段的行为需要被指定。on_delete 参数用于指定这种行为,它必须是一个可调用对象,用于在模型实例被删除时执行相应的操作。
例如,如果我们定义一个模型 A,其中包含一个指向模型 B 的外键,我们可以这样设置 on_delete 参数:
```
class A(models.Model):
b = models.ForeignKey(B, on_delete=models.CASCADE)
```
其中,on_delete 参数设置为 models.CASCADE,表示如果模型 B 中的一个实例被删除,与之相关联的所有模型 A 的实例都将被删除。
如果在设置 on_delete 参数时出现 TypeError: on_delete must be callable 错误,通常是由于未正确设置 on_delete 参数,或者设置了一个不可调用的对象。要解决这个问题,可以检查模型定义中外键或一对一字段的 on_delete 参数是否正确设置,并确保它是一个可调用对象。
相关问题
TypeError: __main__.print_hello() argument after * must be an iterable, not NoneType
这个错误是因为你没有给 `ThreadWrapper` 的 `args` 参数传入一个可迭代对象(iterable),而是传入了 `None`。
可以在初始化 `ThreadWrapper` 对象时,给 `args` 参数传入一个空的元组 `()`,这样就可以避免这个错误:
```python
import threading
class ThreadWrapper:
def __init__(self, target_func, args=None):
self.target = target_func
self.args = args
self.thread = threading.Thread(target=self.run)
def run(self):
self.target(*self.args)
def start(self):
self.thread.start()
def join(self):
self.thread.join()
def print_hello():
print("Hello World!")
tw = ThreadWrapper(print_hello, ())
tw.start()
tw.join()
```
这样就可以正常输出 `Hello World!` 了。
notification_mapping = { NotificationType.DING_TALK.value: DingTalkSendMsg(allure_data).send_ding_notification, NotificationType.WECHAT.value: WeChatSend(allure_data).send_wechat_notification, NotificationType.EMAIL.value: SendEmail(allure_data).send_main, NotificationType.FEI_SHU.value: FeiShuTalkChatBot(allure_data).post } if config.notification_type != NotificationType.DEFAULT.value: notify_type = str(config.notification_type).split(",") for i in notify_type: notification_mapping.get(i.lstrip(""))()这段代码为啥报TypeError: 'NoneType' object is not callable
这个错误的原因是 `notification_mapping.get(i.lstrip(""))` 返回了 `None`,而你试图调用这个 `None` 对象。这可能是因为 `i` 在 `notify_type` 中指定了一个不支持的通知类型,或者是因为 `notification_mapping` 中没有这个通知类型对应的可调用函数。你可以检查一下 `config.notification_type` 的值是否正确,以及 `notification_mapping` 中是否包含了所有可能的通知类型。
阅读全文