個人部落格標籤和文章的表結構設計

2021-09-26 06:49:32 字數 1474 閱讀 8219

標籤和文章是多對多的關係

class article(models.model):

...tag = models.manytomanyfield(tag, related_name='tag', verbose_name='標籤')

...class tag(models.model):

"""標籤

"""title = models.charfield(max_length=30, verbose_name='標籤')

blog = models.foreignkey(blog, related_name='tag_blog', on_delete=models.cascade)

add_time = models.datetimefield(default=datetime.now(), verbose_name='建立時間')

class meta:

verbose_name_plural = '標籤'

def __str__(self):

return self.title

檢視中查詢文章列表

# tag直接等於其id

article_list = article.objects.filter(blog=blog, tag=int(val)).all()

class articletotag(models.model):

# to_field指定關聯的主表的某個字段

tag = models.foreignkey(to=tag, verbose_name='文章', to_field='id')

article = models.foreignkey(to=article, verbose_name='標籤', to_field='id')

class meta:

# 聯合唯一

unique_together = [

('tag', 'article')

]

在檢視中查詢文章列表

# 因為設定的是外來鍵,所以使用tag_id

article_list = articletotag.objects.filter(blog=blog, tag_id=int(val)).all()

for item in article_list:

print(item.article)

class article(models.model):

...

tag = models.manytomanyfield(

to='tag',

through='articletotag',

through_fields=('article', 'tag')

)class meta:

verbose_name_plural = '文章'

結構設計 資料表設計 常用表結構設計

為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。位址一般包括 省 市 縣 區 詳細位址 我們當然可以儲存乙個字段 使用分隔符 json 等儲存 介紹字段介紹 字段介紹 idbigint id parentid parentidlist chi...

Hbase表結構設計

一 主體思路 先確定查詢場景,再確定表結構。二 主鍵設計 主鍵設計需要考慮兩個問題 1.選擇哪些作為主鍵?2.當主鍵大於1個時,如何排列。2.1 邏輯上用於表示行的唯一性的列必須作為主鍵 2.2 單個查詢場景中一定出現的列可以考慮加入主鍵列,用於優化查詢效能 2.3 在多個查詢場景都出現的主鍵列要排...

HBase表結構設計

列簇設計 版本設計 資料壓縮 rowkey設計原則 在hbase有很多張表,這些表需要按照業務劃分開,為方便管理這些表,不同業務就有不同的命名空間,類似hive中的資料庫,不同的資料庫用來儲存不同型別的表。注 建立命名空間 create namespace momo chat 檢視命名空間列表 li...