我需要从模型中排除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
我应该怎么做才能使其起作用?
答案 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]由QuerySet
和Manager
用来从QuerySet
省略数据库中的某些记录,这些记录仍然存在,但是您可以出于某种原因不想检索它。