过滤数据集不具有值
问题描述:
假设我有一个架构如下图所示:过滤数据集不具有值
Book | Author
-------------
B1 | A1
B1 | A3
B1 | A2
B2 | A5
B2 | A4
B2 | A3
B3 | A5
B3 | A6
B3 | A1
B4 | A1
B4 | A5
B4 | A6
与以下型号:
class Books(models.Model):
author = models.CharField(
max_length=100,
blank=False,
null=False,
db_index=True,
verbose_name=_('authors'),
)
book = models.CharField(
max_length=50,
blank=False,
null=False,
db_index=True,
verbose_name=_('book'),
)
book_type = models.CharField(
max_length=50,
blank=False,
null=False,
default="regular"
)
flavour = models.CharField(
max_length=10,
blank=False,
null=False,
verbose_name=_('flavour'),
)
cost = models.IntegerField()
status = models.CharField(
max_length=100,
null=True,
blank=True,
db_index=True,
)
,我想过滤掉所有那些书,其作者是不 A1(B2在这种情况下为)
这是使用group by
和的简单SQL条款,我有困难的时候是使用usinng django queryset和注释完成它。大部分注释工作在count
附近,我无法适应这种特殊情况。
任何指针都很有帮助,谢谢! :)
答
这应该做你想要什么:
Books.objects.exclude(author='A1')
如果你想book
值的不同列表,那么你可以这样做:
Books.objects.exclude(author='A1').values_list('book').distinct()
你Books
模型看起来有点怪我虽然。不确定您的具体用例是什么,但似乎Book
模型的ManyToMany
与Author
的关系可能更合适。
+0
它是一个传统模型,当这张桌子应该包含所有东西......没有正常化...... *我们先辈的罪恶在这里受到伤害*! :) – NoobEditor
你可以发布Django模型吗? – solarissmoke
@solarissmoke:加入 – NoobEditor