標籤和文章是多對多的關係
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...