【发布时间】:2021-12-29 14:21:25
【问题描述】:
我正在尝试使用 pk 删除整个模型,但是当我单击“删除”时,我被重定向到给定页面,但没有任何反应,模型仍然存在并且没有被删除,但是当我写了“房间名称”时'pk' 确实有效,(在此先感谢)
*Views.py:
def delete_room(request, pk):
Room.objects.filter(name=pk).delete()
return redirect('home')
Urls.py:
path("delete/<int:pk>/", views.delete_room, name="delete_room")
Models.py:
class Room(models.Model):
name = models.CharField(max_length=100)
about = models.TextField(max_length=500, null=True, blank=True)
creator = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, related_name='room_creator')
members = models.ManyToManyField(User, through="RoomMember")
class RoomMember(models.Model):
approved = models.BooleanField(default=False, blank=False)
room = models.ForeignKey(Room, related_name='memberships', on_delete=models.CASCADE)
user = models.ForeignKey(User, related_name='user_groups', on_delete=models.CASCADE)
class Messages(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, null=False, blank=False)
text = models.CharField(max_length=10000, blank=False, null=False)
date = models.DateTimeField(default=datetime.now)
room = models.ForeignKey(Room, null=True, blank=False, on_delete=models.CASCADE)
Html:
<a class="btn btn-danger" href="{% url 'delete_room' pk=room.pk %}">Delete Room</a>*
【问题讨论】:
-
我觉得你需要
Room.objects.filter(pk=pk).delete() -
太棒了!非常感谢,伙计
-
这里的小写错误,您尝试的不是
model,而是model instance,请记住您在模型中的模型转换为SQL中的完整表,那么是试图删除一个完整的表还是一个实例?只是收集你,但@voodoo-burger 的评论是完全正确的! -
@JetEzra 感谢您的更正。所以我有一个名为 room 的模型,我试图只删除 1 个房间(用户看到删除按钮的当前房间)。
标签: python django django-models slug