我正在尝试删除表中某个字段的一项。 例如,我想从表格中删除图中所示的“hadi”。 我进行查询以过滤和排除实例,但在最后一部分,delete() 查询不接受 id 或变量等输入以删除一个字段中的特定内容。
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])
现在应该在视图中使用什么查询?
因为它是多对多字段,您需要使用 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