django - django 一对一关系删除用户模型
问题描述
class EngrRegModel(models.Model):
engineer = models.OneToOneField(User, on_delete=models.CASCADE)
skills_description = models.TextField()
reg_date = models.DateTimeField(default=timezone.now)
def __str__(self):
return f'Engineer {self.engineer.username}'
我创建了这个 EngrRegModel,它的一个字段与 Django 用户模型具有一对一的关系,问题是每当删除 EngrRegModel 的实例时,用户也会被删除,我希望它是一种单向街道实现,这样当用户被删除时,EngrRegModel 的实例被删除,但是当 EngrRegModel 的实例被删除时,用户不应该被删除。我该如何解决?
@login_required
def engineerDeleteView(request):
engineer_instance = EngrRegModel.objects.all().filter(engineer =
request.user)[0].engineer
username = request.user
if engineer_instance == request.user and request.method == 'POST':
engineer_instance.delete()
messages.success(request, f'{username}, You Are No Longer A Sky
Squad Engineer')
return redirect('profile')
else:
print("NO")
messages.warning(
request, f'{username}, You Do Not Have Access To This!!!')
return redirect('profile')
这是处理删除功能的视图
解决方案
问题来自固定视图:
@login_required
def engineerDeleteView(request):
engineer_instance = EngrRegModel.objects.all().filter(engineer =
request.user)[0]
username = request.user
if engineer_instance.engineer == request.user and request.method == 'POST':
engineer_instance.delete()
messages.success(request, f'{username}, You Are No Longer A Sky Squad
Engineer')
return redirect('profile')
else:
print("NO")
messages.warning(
request, f'{username}, You Do Not Have Access To This!!!')
return redirect('profile')
推荐阅读
- android - 当使用发布 apk 时,某些代码已被 Dart AOT 编译器 (TFA) 删除
- reactjs - 为什么我的 scss 不能在 MacOS 上处理 react 项目
- php - 如何更改laravel中验证错误的键
- python - 将pandas系列的json对象转换为DataFrame
- python - 在numpy中交换下降条的轴
- c++ - 用 atomic bool 同步 10 个线程
- python - 下载和导入时的 TensorFlow 问题
- azure - 使用 ServiceBusTrigger 的 Azure 函数在 Xamarin.Android 应用程序中不起作用
- sql-server - 如何在选择子句中使用表值函数?
- node.js - 如何使用 OIDC (vuejs + nodejs) 对前端和后端进行身份验证?