如何在 Django 中使用 delete() 查询?

问题描述 投票:0回答:1

我正在尝试删除表中某个字段的一项。 例如,我想从表格中删除图中所示的“hadi”。 我进行查询以过滤和排除实例,但在最后一部分,delete() 查询不接受 id 或变量等输入以删除一个字段中的特定内容。

image

models.py

class Expense(models.Model):
    expenser = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        on_delete=models.CASCADE,
    )
    debtors = models.ManyToManyField(
        CustomUser,
        related_name='debtors',     
    )

    amount = models.PositiveIntegerField()
    text = models.TextField()
    date = models.DateField(null=True)
    time = models.TimeField(null=True)

    def get_debtors(self):
        return ", ".join([str(d) for d in self.debtors.all()])

    def who_has_no_paid(self):
        return ", ".join([str(d) for d in self.debtors.all() if str(d) != str(self.expenser)])

    def debt(self):
        return int(float(self.amount/self.debtors.all().count()))

    def get_absolute_url(self):
        return reverse('expense_detail', args=[self.id])

现在应该在视图中使用什么查询?

django django-models django-views django-queryset django-orm
1个回答
0
投票

因为它是多对多字段,您需要使用 expense_obj.debtors.remove(hadi_obj) 而不是使用 delete()。

文档非常适合参考

你的观点可能是:

def remove_hadi(request):
   expense_obj = Expense.objects.get(id=some_id) #get the expense obj from where u want to remove hadi
   hadi_obj = User.objects.get(name="hadi") # get user obj u want to remove eg: hadi
   # use m2m query
   expense_obj.debtors.remove(hadi_obj)
   return response


© www.soinside.com 2019 - 2024. All rights reserved.