【问题标题】:Django - how to delete objects in the database?Django - 如何删除数据库中的对象?
【发布时间】:2020-11-19 03:50:39
【问题描述】:

所以,我在删除 django 项目数据库中的对象时遇到问题。我的 models.py 文件中有一个看起来像这样的模型。

class Myteam(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
    QB = models.CharField(max_length=80, null=True)
    QBscore = models.IntegerField(null=True)
    RB1 = models.CharField(max_length=80, null=True)
    RB1score = models.IntegerField(null=True)
    RB2 = models.CharField(max_length=80, null=True)
    RB2score = models.IntegerField(null=True)
    WR = models.CharField(max_length=80, null=True)
    WR1score = models.IntegerField(null=True)
    WR2 = models.CharField(max_length=80, null=True)
    WR2score = models.IntegerField(null=True)
    TE = models.CharField(max_length=80, null=True)
    TEscore = models.IntegerField(null=True)
    D = models.CharField(max_length=80, null=True)
    Dscore = models.IntegerField(null=True)
    K = models.CharField(max_length=80, null=True)
    Kscore = models.IntegerField(null=True)

我希望能够删除此模型中的信息。在我的项目中,我将此模型的信息显示在一个类似于table/html 的表中,我的目标是单击“删除”按钮并删除该信息行。我一直在关注一些关于为我的 views.py 创建删除功能的教程和建议,但我无法让它工作。这看起来很简单,但我不确定我哪里出错了。这是我的views.py和urls.py

def delete_player(request, id):
    player = Myteam.objects.get(id=id)
    #print(player.id)
    player.delete()
    return redirect('index')
path('delete_player/<int:id>', views.delete_player, name="delete_player")

这是我的 html...

<form action="" method="POST">
        {% csrf_token %}
        <table style="border: 1px solid black;">
                                      
        <tr>
            <td style="border: 1px solid black;">QB</td>
            <th style="border: 1px solid black;">{{ team.QB }} <a href="{% url 'delete_player' 
 id=player.id %}"></a><button id="delete_button">Drop</button></a> </th>
            <th style="border: 1px solid black;"></th>
            <th style="border: 1px solid black;">{{ QBscore }}</th>
            <th style="border: 1px solid black;"></th>
        </tr>    
    </form>

【问题讨论】:

    标签: python django database sqlite object


    【解决方案1】:

    有很多方法可以做到这一点。更好的方法是创建另一个视图,从数据库中删除对象。

    在我看来,你已经有了一个表单,现在,在下拉按钮中,给它一个与你的模型对象相同的 id。并且通过一些前端javascript,你可以放置一些事件监听器,比如onclick。当有人单击按钮时,该事件侦听器函数应该运行,并通过 ajax 将数据发送到该视图,其中数据库对象被删除。在 ajax 中,你应该发布 id 和 csrf 令牌...

    我应该在这里举个例子,但我现在没有。

    【讨论】:

    • 创建另一个从数据库中删除对象的视图是什么意思?我认为我已经提出的观点应该这样做。
    • 你有一个表单,并且在表单标签中,你有一个名为 action 的属性。当前 action="",所以提交的表单会发送数据到同一个 url。因此,创建一个新视图(url,并查看两者),它将接受表单数据,并在 html 中,在表单标签中,将 action="url 更改为新视图"...
    【解决方案2】:

    我想你删除对象后忘记保存数据库了。

    player.save()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-19
      • 1970-01-01
      • 2021-05-29
      • 1970-01-01
      相关资源
      最近更新 更多