有多對多字段的時候自己建立的第三章表就是中介模型
classarticle(models.model):
'''文章表
'''title = models.charfield(max_length=64,verbose_name="
文章標題")
summary = models.charfield(max_length=244, verbose_name="
文章概要")
create_time = models.datetimefield(verbose_name="
建立時間
",auto_now_add=true)
update_time = models.datetimefield(verbose_name="
修改時間
",auto_now=true)
up_count = models.integerfield(verbose_name="
點讚數",default=0)
down_count = models.integerfield(verbose_name="
點滅數",default=0)
comment_count = models.integerfield(verbose_name="
",default=0)
read_count = models.integerfield(verbose_name="
閱讀數",default=0)
user = models.foreignkey(to="
userinfo
",verbose_name="
所屬作者
",null=true,blank=true)
classify = models.foreignkey(to="
classfication
",verbose_name="
所屬類別
",null=true,blank=true)
tags = models.manytomanyfield(to="
tag",through="
article2tag
",through_fields=('
article
', '
tag'),verbose_name="
所屬標籤")
site_article_category = models.foreignkey(to="
sitearticlecategory
",verbose_name="
所屬文章分類
",null=true,blank=true)
class
meta:
verbose_name_plural = "
文章表"
def__str__
(self):
return
self.title
class
tag(models.model):
'''標籤表
'''name = models.charfield(max_length=32,verbose_name="
標籤名"
) blog = models.foreignkey(to="
blog
",verbose_name="
所屬部落格")
class
meta:
verbose_name_plural = "
標籤表"
def__str__
(self):
return
self.name
class
article2tag(models.model):
article = models.foreignkey(verbose_name="
文章",to="
article")
tag = models.foreignkey(verbose_name="
標籤",to="
tag"
)
class
meta:
verbose_name="
文章和標籤關係表
"'''
聯合唯一
'''unique_together =[
("article
","tag")
]def__str__
(self):
return self.article.title + "
"+self.tag.name
像是這樣自己建立的第三張表就屬於是中介模型。一般就django會給我們自動建立第三張表,
人家自己建立的只是有關係字段,不能在增加其他的字段了,
如果根據需求新增其他字段,不需要manytomany自己建立第三張表就自己設定第三張表
這就需要我們自己去建立第三張表。
當然我現在設計的article2tag這個第三張表就可以在裡面新增其他你需要的字段。
如果用了中介模型了,就不能在用add,remove了為什麼不能這樣做? 這是因為你不能只建立 article和 tag之間的關聯關係,你還要指定 membership模型中所需要的所有資訊;而簡單的add、create 和賦值語句是做不到這一點的。所以它們不能在使用中介模型的多對多關係中使用。此時,唯一的辦法就是建立中介模型的例項。
remove()方法被禁用也是出於同樣的原因。但是clear() 方法卻是可用的。它可以清空某個例項所有的多對多關係:
Django 中介模型
有多對多字段的時候自己建立的第三章表就是中介模型 class article models.model 文章表 title models.charfield max length 64,verbose name 文章標題 summary models.charfield max length 244...
orm之中介模型
中介模型針對的是manytomany 多對多 的時候第三張表的問題,中介模型其實指的就是我們不通過django建立第三張表,如果自己不建立第三張表,而是由django給我們建立,那就不存在中介模型 class book models.model title models.charfield max ...
Orm之中介模型
中介模型針對的是manytomany 多對多 的時候第三張表的問題,中介模型其實指的就是我們不通過django建立第三張表,如果自己不建立第三張表,而是由django給我們建立,那就不存在中介模型 class book models.model title models.charfield max ...