2017-06-01 92 views
0

我是Django的新手。我試圖用新聞創造一個應用程序,並在這些新聞中提及的公司,並創建了以下型號:現在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在AI空間與谷歌競爭」這條新聞有兩個公司:Facebook和Google。

1)我該如何設計我的模型,使它們爲Company取多個值?

2)如何通過shell保存這些值?

3)如何查詢它,這樣類似SELECT COUNT (DISTINCT 'Company')....查詢應該輸出的Facebook谷歌分開,而不是「Facebook,谷歌」

我被困在這裏,迫切需要一些指導。 TIA

+0

您的模型看起來不錯。你只需要研究幾個django教程,以瞭解你提出的3個問題。 –

回答

1

您創建的模型很好,可以使用它們。讓我們走一步看一步,

  1. 讓我們創建公司模型的實例:

    C =公司(COMPANY_NAME = 「臉譜」,COUNTRY_NAME = 「USA」)

    c.save( )

  2. 現在讓我們來創建動態模型的實例:

    N =新聞(news_title = 「AI」,NEWS_LINK = 「鏈接」,news_date = 「日期」)

  3. 現在我們有關聯,該公司與新聞,這可以爲已完成:

    n.news_company.add(C)

  4. 現在查詢,我們可以如下寫:

    News.objects.filter(news_company__name = 「臉譜」)

這將返回該公司的Facebook的所有新聞。

希望這給你一個良好的開端。欲瞭解更多詳情,請閱讀Documentation

+0

謝謝。我知道它在這裏。如果有以下兩個公司: 'c = Company(company_name =「Facebook」,country_name =「USA」)' 'g = Company(company_name =「Google」,country_name =「USA」)' Then .. 。同時公司與新聞相關聯,我應該寫: n.news_company.add(C,G)......或者...... 'n.news_company.add(C)'' n.news_company .add(g)' 'n.save().....' 它會進入這兩家公司,並分別檢索它們嗎? – chhibbz

+0

是的,你可以做n.news_company.add(c,g),它會相應地關聯它。 – AR7

+0

謝謝。我正在嘗試 – chhibbz

相關問題