【问题标题】:Querying records not in through table通过表查询不在的记录
【发布时间】:2013-11-09 13:02:24
【问题描述】:

恢复 Django 示例:

from django.db import models

class Publication(models.Model):
    title = models.CharField(max_length=30)

class Article(models.Model):
    headline = models.CharField(max_length=100)
    publications = models.ManyToManyField(Publication)    

如何获得所有没有发表的文章?

Article.objects.filter(...) 

【问题讨论】:

    标签: django orm many-to-many django-queryset


    【解决方案1】:

    publications 指定为无:

    Article.objects.filter(publications=None)
    

    例子:

    >>> p1 = Publication.objects.create(title='1')
    >>> p2 = Publication.objects.create(title='2')
    >>> a1 = Article.objects.create(headline='a')
    >>> a2 = Article.objects.create(headline='b')
    >>> a3 = Article.objects.create(headline='c')
    >>> a1.publications.add(p1)
    >>> a1.publications.add(p2)
    >>> a3.publications.add(p1)
    >>> Article.objects.filter(publications=None)
    [<Article: Article object>]
    >>> _[0].headline
    u'b'
    

    【讨论】:

      【解决方案2】:
      Article.objects.filter(publications=None)
      

      将带有出版物字段的空白=True 定义到文章模型中,否则它将不允许您创建没有出版物的文章。

      publications = models.ManyToManyField(Publication, blank=True)  
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-01-11
        • 1970-01-01
        • 2021-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多