以下是我创建的模型: 所以我用风险标记了每个数据项(搜索结果),现在我想在项目中按风险浏览数据项。 我没有具体的想法,通用关系如何工作。在论坛上查看我看到人们使用泛型来为结果添加标签。我正在使用Django 1.7。我现在已经完成了所有工作,但我不确定如何编写视图集以便按风险搜索搜索结果,以便我可以从前端查询API。 搜索结果可能会标记多个风险
`
Risks/models.py
class Risk(models.Model):
"""Risk for data. Every risk has unique name.
"""
name = models.CharField(max_length=100, unique=True)
search_string = models.TextField(blank=True) # search keywords related to this risk
def __unicode__(self):
return 'Risk[id: {id}, name: {name}]'.format(
id=self.id, name=self.name)
class RiskItem(models.Model):
#RiskItem(content_type=article, risk=r)
risk = models.ForeignKey(Risk)
project = models.ForeignKey('engagement.Project')
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
def __unicode__(self):
return "%s :" % (self.risk.name)
我通过GenericRelation在搜索结果模型中引用了风险,参考了论坛。这是它的样子。 以下是我的搜索结果,每个搜索项都与风险相关联。
Search/models.py
from engagement.models import Project
from risk.models import RiskItem
from django.contrib.auth.models import User
class Search(models.Model):
project = models.ForeignKey(Project, related_name="searches")
user = models.ForeignKey(User)
string = models.CharField(max_length=1024) # search string
created_at = models.DateTimeField(auto_now_add=True)
def __unicode__(self):
return self.string
class SearchResult(models.Model):
search = models.ForeignKey(Search, related_name="results")
title = models.CharField(max_length=255)
url = models.URLField(blank=False, max_length=300)
snippet = models.TextField(blank=True)
risks = GenericRelation(RiskItem)
label = models.CharField(max_length=100, default=0)
created_at = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ('rank',)
def __unicode__(self):
return self.title
`
想要创建一个按风险列出所有搜索结果的视图,通过连接两个api,单个风险可以与多个搜索结果项相关联。