Django:将多个值添加到模型的字段中

时间:2017-06-01 04:48:35

标签: python django database-design model

我是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

1 个答案:

答案 0 :(得分:1)

您创建的模型很好,可以使用它们。让我们一步一步走,

  1. 让我们创建Company模型的实例:

    c = Company(company_name="Facebook", country_name="USA") c.save()

  2. 现在让我们创建一个News模型的实例:

    n = News(news_title="AI", news_link="Link", news_date="date")

  3. 现在我们必须将CompanyNews相关联。这可以这样做:

    n.news_company.add(c)

  4. 现在查询,我们可以按如下方式编写:

    News.objects.filter(news_company__name="Facebook")

  5. 这将返回Facebook公司的所有新闻。

    希望这能为您提供一个良好的开端。如需更深入的报道,请阅读此Documentation