我正在尝试在Django查询中建立一个额外的字段,以指定文章是否属于Journal。

我正在尝试做Article.objects.filter(title__icontains='foo').extra(select={in_the_journal:Function_Belongs_To_Journal(journal_id)})之类的事情

我目前正在迭代搜索结果以找出答案,但我想从数据库中检索此信息

我的models.py如下:

class Article(models.Model):
    title               = models.CharField(max_length=400)
    content             = models.TextField()
    date                = models.DateTimeField('date published', null=True, default = timezone.now())


class Journal(models.Model):
    name          = models.CharField(max_length=200)
    authors       = models.ManyToManyField(Author, null=True, blank = True)
    articles      = models.ManyToManyField(Article, null=True, blank = True)


这是添加额外字段以表明这一点的方法吗?使用额外的还是注释的Django标签?

最佳答案

只需使用reverse relationship

Article.objects.filter(title__icontains='foo', journal__pk=journal_id)


更新以评论:如果您需要所有文章,并且想知道其中哪些期刊没有期刊,请使用RelatedManger

articles = Article.objects.filter(title__icontains='foo')
for a in articles:
    journals = a.journal_set.all()
    if journals:
        # article have journals
        # list of Journal objects is in journals
    else:
        # article have not journals


当然,您可以将此循环放在模板中:

{% for a in articles %}
    {% if a.journal_set.all %}
         color1
    {% else %}
         color2
    {% endif %}
{% endfor %}

关于jquery - 添加额外的字段以查找对象是否与另一个对象相关,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21341178/

10-12 22:46