TypeError: __init__() missing 1 required positional argument: 'on_delete' (Django 2)
TypeError: __init__() missing 1 required positional argument: 'on_delete' (Django 2)
我需要在下面的代码中添加所需的参数:on_delete = models.CASCADE
。否则,我得到以下内容
TypeError: __init__() missing 1 required positional argument: 'on_delete'.
我应该如何以及在何处执行此操作?
class FilerFileField(models.ForeignKey):
default_form_class = AdminFileFormField
default_model_class = File
def __init__(self, **kwargs):
# We hard-code the `to` argument for ForeignKey.__init__
dfl = get_model_label(self.default_model_class)
if "to" in kwargs.keys(): # pragma: no cover
old_to = get_model_label(kwargs.pop("to"))
if old_to != dfl:
msg = "%s can only be a ForeignKey to %s; %s passed" % (
self.__class__.__name__, dfl, old_to
)
warnings.warn(msg, SyntaxWarning)
kwargs['to'] = dfl
super(FilerFileField, self).__init__(**kwargs)
def formfield(self, **kwargs):
# This is a fairly standard way to set up some defaults
# while letting the caller override them.
defaults = {
'form_class': self.default_form_class,
}
try:
defaults['rel'] = self.remote_field
except AttributeError:
defaults['rel'] = self.rel
defaults.update(kwargs)
return super(FilerFileField, self).formfield(**defaults)
它将在 __init__
函数的最后一行 super(FilerFileField, self).__init__(**kwargs)
中。
可以看到on_delete
是ForeignKey
class的必选参数。
https://docs.djangoproject.com/en/2.2/ref/models/fields/#foreignkey
https://docs.djangoproject.com/en/2.2/ref/models/fields/#arguments
类似于super(FilerFileField, self).__init__(on_delete=models.CASCADE, **kwargs)
。
当您使用 FK 等任何 Filer 模型时,您需要添加 on_delete=models.CASCADE
我需要在下面的代码中添加所需的参数:on_delete = models.CASCADE
。否则,我得到以下内容
TypeError: __init__() missing 1 required positional argument: 'on_delete'.
我应该如何以及在何处执行此操作?
class FilerFileField(models.ForeignKey):
default_form_class = AdminFileFormField
default_model_class = File
def __init__(self, **kwargs):
# We hard-code the `to` argument for ForeignKey.__init__
dfl = get_model_label(self.default_model_class)
if "to" in kwargs.keys(): # pragma: no cover
old_to = get_model_label(kwargs.pop("to"))
if old_to != dfl:
msg = "%s can only be a ForeignKey to %s; %s passed" % (
self.__class__.__name__, dfl, old_to
)
warnings.warn(msg, SyntaxWarning)
kwargs['to'] = dfl
super(FilerFileField, self).__init__(**kwargs)
def formfield(self, **kwargs):
# This is a fairly standard way to set up some defaults
# while letting the caller override them.
defaults = {
'form_class': self.default_form_class,
}
try:
defaults['rel'] = self.remote_field
except AttributeError:
defaults['rel'] = self.rel
defaults.update(kwargs)
return super(FilerFileField, self).formfield(**defaults)
它将在 __init__
函数的最后一行 super(FilerFileField, self).__init__(**kwargs)
中。
可以看到on_delete
是ForeignKey
class的必选参数。
https://docs.djangoproject.com/en/2.2/ref/models/fields/#foreignkey
https://docs.djangoproject.com/en/2.2/ref/models/fields/#arguments
类似于super(FilerFileField, self).__init__(on_delete=models.CASCADE, **kwargs)
。
当您使用 FK 等任何 Filer 模型时,您需要添加 on_delete=models.CASCADE