2015-09-04 161 views
-2

使用Django,我們可以設計任何方式,我們想要的模型是,作爲一種先進的初學者,我練存儲與模特一起元數據,如下圖所示,爲Django模型存儲SEO特定元數據的最佳方式是什麼?

class Book(models.Model): 
    title = models.CharField(max_length=120) 
    author = models.CharField(max_length=30) 
    meta_descrition = models.CharField(max_length=170) 

我不認爲這是它必須存儲的方式。

我的一個項目得到了龐大的數據庫,其中該模型失敗(因爲我看到它這麼難維護)

最近,我和型號混入的想法,這裏的模型從元數據混合類繼承來到身邊。

所以我的問題,

什麼是專業(模塊化,高效,可管理,可擴展,無憂)的方式存儲在一個Django模型中的元數據?

+0

是什麼讓它難以維護?什麼是你的模型中的元數據? meta_description?你爲什麼認爲這是一個糟糕的設計? – eugene

+0

@eugene只是因爲每當我想編輯一些SEO的具體細節,我看到打開的模型包含所有的模型數據,我想它不應該是這樣,因爲我認爲它們是相互獨立的數據片段,但不是同時進行編輯。模型細節最終確定,而搜索引擎優化的東西隨趨勢和其他因素而變化。謝謝 – Rivadiz

+0

你的meta_description是seo 標籤我猜?如果它取決於你的模型數據和變化,你可以創建一個@屬性,以便你可以適應變化。你說你的方式失敗了,沒有說太多爲什麼它失敗了,如果你提供詳細的信息,這將是有益的。 – eugene

回答

1

您正在尋找abstract base classes

class Base(models.Model): 
    description = models.CharField(max_length=170) 

    class Meta: 
     abstract = True 

class Book(Base): 
    title = models.CharField(max_length=120) 
    author = models.CharField(max_length=30) 

Book車型將擁有三個字段:descriptiontitleauthor

+0

是否與seo mixin相同?如果不是有什麼區別?爲什麼要選擇這個(模型seo mixin)? – Rivadiz

+0

你可以發佈一個引用SEO混合?因爲我不相信這是'內建'的Django功能。所以這是你的第一個區別。 mixin也爲視圖添加「風味」。這個基礎模型在db中添加一個字段。 – allcaps

+0

沒有任何內建的SEO mixin,但有些人可以像一個抽象基類一樣從mixin繼承。例如。像'PermissionMixin'這是在這裏引用https://docs.djangoproject.com/en/1.9/topics/auth/customizing/#custom-users-and-permissions – Rivadiz

相關問題