0

我正在使用带有表单显示的选择字段的模型。我想在我的views.py 中创建一个删除功能,但不能让它工作。我怀疑这是因为我的模型对象没有传递 id,或者我的 url 出于某种原因没有选择对象的 id。

这是我的模型。

class Player(models.Model):

    PLAYER_ROLE_CHOICES = (
        (1, 'Quarterback'),
        (2, 'Runningback'),
        (4, 'Widereceiver'),
        (5, 'Tightend'),
        (6, 'Kicker'),
        
    )
    role = models.PositiveSmallIntegerField(choices=PLAYER_ROLE_CHOICES)

这是我试图在 views.py 中创建的删除功能

def delete_player(request, id):
    player = Player.objects.get(id=id)
    player.delete()
    
    
    return redirect('show')

和我的网址

path('delete_player/<int:id>', views.delete_player, name="delete_player")

这是我模板中的相关行。

<tr>  
        
        <td>{{ QB }}  
             
            <a href="{% url 'game:delete_player' player.id %}">Delete</a>  
        </td> 
        
    </tr> 

我知道我显然需要一个 id 来传递给 views.py 中的 url 和 delete 函数,但我不知道如何从我的模型中获取 id。我将不胜感激任何帮助/另一组对这个问题的看法。提前致谢。

4

1 回答 1

0

假设您在 django 模板中有一个 Player 对象。使用相对 url 'delete_player' 您可以轻松创建一个锚标记来调用播放器删除视图。

所以你可以简单地写:

<a href="{% url 'delete_player' object.id %}">Delete</a>

有关更多信息,您可以访问官方文档

于 2020-11-24T11:51:35.913 回答