如何从模型中排除对象?

时间:2019-07-14 20:20:57

标签: django

我需要从模型中排除1个尺寸。很好的字段:Size = models.ManyToManyField('Size')

尺寸型号:

class Size(models.Model):
    size = models.CharField(max_length = 15)

    def __str__(self):
        return self.size

我尝试在views.py中这样做:

good1 = Good.objects.get(id = good_id)
choosen_good_size = good1.Size.get(size = 'XS')
choosen_good_size.exclude()
good1.save()

但是我得到一个错误: 异常值:“大小”对象没有属性“排除”

在其他情况下,我得到AttributeError:无法通过良好实例访问Manager

我应该怎么做才能使其起作用?

1 个答案:

答案 0 :(得分:0)

为此您使用.remove(..) [Django-doc],例如:

good1 = Good.objects.get(id=good_id)
size = Size.objects.get(size='XS')

good1.Size.remove(size)
  

注意:根据PEP-8,您可能应该将ManyToManyField sizes命名为Size

.exclude(..) [Django-doc]QuerySetManager用来从QuerySet省略数据库中的某些记录,这些记录仍然存在,但是您可以出于某种原因不想检索它。