django drf框架,外來鍵關聯查詢

2021-10-16 12:29:50 字數 2074 閱讀 5051

1 資料庫modelclass menu(models.model):

menuid=models.bigautofield(primary_key=true)

menucode = models.charfield(max_length=16,default='', verbose_name='選單code')

menuname = models.charfield(max_length=50,verbose_name='選單',blank=true, null=true)

parentmenucode = models.charfield(max_length=20,verbose_name='父選單',blank=true, null=true)

path = models.charfield(max_length=20,verbose_name='選單路徑',blank=true, null=true)

icon = models.charfield(max_length=20,verbose_name='選單圖示',blank=true, null=true)

roles = models.charfield(max_length=500,verbose_name='角色',blank=true, null=true)

isdelete = models.booleanfield(default=0,verbose_name='1刪除')

class menu_operation(models.model):

menu = models.foreignkey(menu, on_delete=models.cascade, related_name='menuoper',blank=true, null=true, verbose_name='選單')

opername = models.charfield(max_length=50,verbose_name='操作名稱',blank=true, null=true)

roles = models.charfield(max_length=500,verbose_name='角色',blank=true, null=true)

isdelete = models.booleanfield(default=0,verbose_name='1刪除')

2 序列化類

正向查詢關聯外來鍵的名稱

class menuoperationserializer(serializers.modelserializer):

# source 格式模型外來鍵模型欄位名.主表的字段屬性

menu=serializers.charfield(source="menu.menuname",read_only=true)

class meta:

model = models.menu_operation

fields = '__all__'

反向查詢關聯的外來鍵物件列表

class menuserializer(serializers.modelserializer):

#注意順序,需在字表的後邊定義該序列化,

#屬性與子表的related_name對應

menuoper = menuoperationserializer(many=true)

class meta:

model = models.menu

fields = '__all__'

3 查詢(和普通查詢一致)

class menuviewset(viewsets.genericviewset):

serializer_class = serializer.menuserializer

authentication_classes=[jwtauthentication]

def findallmenu(self, request):

instance=menu.objects.filter(isdelete=0)

serializer = self.get_serializer(instance, many=true)

return apiresponse(data=serializer.data)

關聯 外來鍵問題

外來鍵問題 外來鍵一定是每個表的主鍵關聯問題 兩個表之間有聯絡,是通過外來鍵的設定模型中如果有外來鍵和多對多字段,建立的時候外來鍵必須首先繫結,然後儲存,才能新增多對多字段。relationships 主要有三類 many to one,many to many,one to one class s...

PostgreSQL 外來鍵關聯操作

乙個外來鍵約束指定一列 或一組列 中的值必須匹配出現在另乙個表中某些行的值。我們說這維持了兩個關聯表之間的引用完整性。注意,乙個從表外來鍵所引用的主表 column 必須是乙個主鍵或者是被唯一約束所限制的。這意味著主表被引用的列總是擁有乙個索引 位於主鍵或唯一約束之下的索引 因此在其上進行的乙個引用...

MySQL 外來鍵關聯策略

eg.乙個使用者可有擁有多個訂單,乙個訂單只能屬於乙個使用者,一對多,在tb order中使用外來鍵user id關聯tb user的id。當刪除 更新tb user中的主鍵時,與之關聯的tb order要受到影響,比如 tb user中的一條記錄 1chy abcd tb order中一條記錄,1...