我是Django的新手。我正在尝试创建一个带有新闻的应用程序,以及这些新闻中提到的公司,并创建了以下模型:
class Company(models.Model):
company_name = models.CharField(max_length=100)
company_country = models.CharField(max_length=50)
def __str__(self):
return self.orgn_name
class News(models.Model):
news_title = models.CharField(max_length=200)
news_link = models.CharField(max_length=100)
news_date = models.DateField()
news_company = models.ManyToManyField(Company)
def __str__(self):
return self.news_title
现在,有消息可能会提到不止一家公司。如何解释,并在数据库条目中输入公司列表?我现在正在使用默认的Sqlite DB。
E.g。一则新闻可以" Facebook在人工智能领域与谷歌竞争" 这条新闻有两家公司:Facebook和谷歌。
1)如何设计我的模型,使它们为Company
?
2)如何通过shell保存这些值?
3)如何查询,以便类似SELECT COUNT (DISTINCT 'Company')....
的查询应分别输出 Facebook 和 Google ,而不是& #34; Facebook,Google" ?
我被困在这里,迫切需要一些指导。 TIA
答案 0 :(得分:1)
您创建的模型很好,可以使用它们。让我们一步一步走,
让我们创建Company
模型的实例:
c = Company(company_name="Facebook", country_name="USA")
c.save()
现在让我们创建一个News
模型的实例:
n = News(news_title="AI", news_link="Link", news_date="date")
现在我们必须将Company
与News
相关联。这可以这样做:
n.news_company.add(c)
现在查询,我们可以按如下方式编写:
News.objects.filter(news_company__name="Facebook")
这将返回Facebook公司的所有新闻。
希望这能为您提供一个良好的开端。如需更深入的报道,请阅读此Documentation。