2015-09-04 63 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

相关问题