1对于我的一个应用程序,以前我使用django 1.10并跟踪创建的模型,我使用audit_log更新了该模型,但是在django 2.1中不起作用。我收到以下错误,所以你们能建议我如何实现创建模型,并通过跟踪模型进行更新。
from audit_log.models.fields import CreatingUserField, LastUserField
class AuthStampedModel(Model):
created_by = CreatingUserField(verbose_name = _("created by"), related_name = "created_%(app_label)s_%(class)s_set")
super(LastUserField, self).__init__(to = to, null = null, editable = editable, **kwargs)
TypeError: __init__() missing 1 required positional argument: 'on_delete'
这是我的代码-
class Plan_type(models.Model):
type = models.CharField(max_length=250, verbose_name=_("Plan Type"))
created_by = CreatingUserField(related_name = "SubscriptionPlanCreatedBy")
created_date = models.DateTimeField(auto_now_add=True,auto_now=False)
updated_by = LastUserField(related_name = "SubscriptionPlanUpdatedBy")
updated_date = models.DateTimeField(auto_now_add=False, auto_now=True)
答案 0 :(得分:0)
我看到这是一个古老的问题,但以防万一您尚未找到解决方案...
您尝试使用django.models中的选项之一传递on_delete吗?
如果创建记录的用户被删除,则应指定要对模型中的记录执行的操作。
例如,如果要防止在模型中引用用户时将其删除:
class Plan_type(models.Model):
type = models.CharField(max_length=250, verbose_name=_("Plan Type"))
created_by = CreatingUserField(related_name="SubscriptionPlanCreatedBy", on_delete=models.PROTECT)
created_date = models.DateTimeField(auto_now_add=True, auto_now=False)
updated_by = LastUserField(related_name = "SubscriptionPlanUpdatedBy", on_delete=models.PROTECT)
updated_date = models.DateTimeField(auto_now_add=False, auto_now=True)
这些是选项:
来源:https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey.on_delete
CASCADE
级联删除。 Django将SQL约束的行为模拟为ON 删除CASCADE,并删除包含ForeignKey的对象。
保护
通过引发ProtectedError来防止删除引用的对象 django.db.IntegrityError的子类。
SET_NULL
将ForeignKey设置为null;仅当null为True时才可能。
SET_DEFAULT
将ForeignKey设置为其默认值; ForeignKey的默认值 必须设置。