ManyToMany

ManyToManyField 能接受額外的參數以定義這種關係的工作方式, 所有這些參數都是可選的:

參數 描述
related_name 參閱上文中 Foreignkey 小節講到的 related_name
filter_interface 在 admin 表單中使用適當的 Javascript "過濾" 界面 (界面友好易用) 而不使用 <selectmultiple> (不易使用). 它的值應該是 models.HORIZONTAL 或 models.VERTICAL (也就是界面應該橫放還是豎放).
limit_choices_to 參閱上文中 ForeignKey 的同名參數
singular 該字段的唯一名字. 在 get_* 方法中使用這個名字.在上面的例子裏, , Django 提供給Pizza 對象一個 get_topping_list() 方法. 這裏 topping 就是 singular 參數的默認值(它來自被連接的類的名字的小寫) 使用 singular 參數可以改變這些自動生成方法的名字, 尤其當你的一個 model和另一個 model 具有多個 ManyToMany 關係時, 這個參數就會相當有用.
symmetrical

僅用於 model 定義自身的 ManyToManyFields . 假設有下面一個 model:

class Person(models.Model):
friends = models.ManyToManyField("self")

當 Django 處理該 model 時, Django 會發現這是一個對自己的 ManyToManyField , 因此它不會添加一個 "person_set" 屬性. ManyToManyField 是對稱的, 也就是: 我是你的朋友, 你也就是我的朋友. 這個意思.

若你不需要這種對 model 自身的 ManyToMany 關係,設置 symmetrical 爲 False. 這樣 Django 會強制給關係的另一方添加一個對象集描述符.從而允許 ManyToMany 關係是不對稱的.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章