Michael-Q 2022-05-06 16:22 采纳率: 0%
浏览 148
已结题

django中使用model的delete()方法时报错id属性设置为None

问题遇到的现象和发生背景

我使用django连接MySQL数据库想要实现对数据的删除功能,但是配置好model类和url路由之后,在创建视图函数后运行报错:user_patient object can't be deleted because its id attribute is set to None.

问题相关代码,请勿粘贴截图

model类:
class user_patient(models.Model):
sex_choices = (
(0, "女"),
(1, "男")
)
id = models.AutoField(primary_key=True,) # id 会自动创建,可以手动写入
name = models.CharField(max_length=45) # 姓名
id_card = models.CharField(max_length=45) # 身份证
phone = models.CharField(max_length=45) # 电话
password = models.CharField(max_length=45) # 密码
sex = models.SmallIntegerField(choices=sex_choices) # 性别
grade = models.CharField(max_length=45) #班级

url:
path('patientDelete',view_patient.patientDelete,name='patientDelete'),#删除信息

视图函数:
@api_view(['GET','POST'])

删除信息列表

def patientDelete(request):

获取参数

id = request.POST.get('id')
name = request.POST.get('name')
id_card = request.POST.get('id_card')
phone = request.POST.get('phone')
password = request.POST.get('password')
sex = request.POST.get('sex')
grade = request.POST.get('grade')

使用model的delete()方法删除

user = user_patient(id=id,name=name, id_card=id_card, phone=phone, password=password, sex=sex, grade=grade)
user.delete()
return Action.success()

运行结果及报错内容

点击后结果没有变化,终端报错

img

我的解答思路和尝试过的方法

后来由尝试使用 调用实体对象/查询结果集的 delete() 方法,结果报错为
Manager isn't accessible via user_patient instances

我想要达到的结果

希望可以成功运行视图函数,删除单个数据

  • 写回答

1条回答 默认 最新

  • ~白+黑 Python领域新星创作者 2022-05-06 17:36
    关注

    你数据库里有这条数据嘛,如果没有,删除什么呢,建议你打印下一获取到的id等数据,看看是不是,没有返回,另外删除的话直接用主键锁定删除就可以了,不需要所有的字段吧

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月13日
  • 创建了问题 5月6日

悬赏问题

  • ¥100 关于python拓展屏使用pyautogui.screenshot无法截图的问题
  • ¥15 有偿求答 无导出权限怎么快速导出企业微信微文档
  • ¥15 求解答,怎么数码管中这么加入闹钟或者传感器,这应该怎么加入相应的代码
  • ¥15 scottplot5
  • ¥30 想问问这个建模怎么编程没有思路
  • ¥15 关于imageENview(ImageEN)中新建图层并根据鼠标位置添加图标
  • ¥100 用两台电脑局域联网进行MT5的EA参数优化,但是连接不上,日志提示:
  • ¥15 FastAPI报错: AsyncSession不是有效Pydantic类型
  • ¥50 这Mac系统提示虚拟内存不足,怎么解决
  • ¥15 Rs232电路无法收发数据,求帮助