我正在尝试在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/