django model联表关系和路由分发
1.多对多关系
(1)ER图
(2)model
from django.db import models
# Create your models here.
class Person(models.Model):
pname = models.CharField(max_length=128)
def __str__(self):
return self.pname
class Group(models.Model):
gname = models.CharField(max_length=128)
gmembers = models.ManyToManyField(Person, through='Membership')
def __str__(self):
return self.gname
class Membership(models.Model):
person = models.ForeignKey(Person, on_delete=models.CASCADE)
group = models.ForeignKey(Group, on_delete=models.CASCADE)
mdate_joined = models.DateField()
minvite_reason = models.CharField(max_length=64)
(3)视图
from django.http import JsonResponse
from django.shortcuts import render
from .models import *
# Create your views here.
def query_group_by_pname(request):
if request.method == "GET":
pname=request.GET.get("pname")
groups=Group.objects.filter(gmembers__pname__startswith=pname)
ret_msg = {"code":"1000","msg":"query secceed"}
return JsonResponse(ret_msg)
(4)路由
path('queryGroupByName', query_group_by_pname),
(5)效果
2.路由分发
示例:两个app
app1:myform/urls.py
from django.urls import path,re_path
from .views import *
urlpatterns=[
path('showUser', show_user),
path('addUser', addUser),
path('deleteUser', deleteUser),
path('updateUser', updateUser),
path('queryUser', queryUser),
]
app2:persontest/urls.py
from django.urls import path,re_path
from .views import *
urlpatterns=[
path('queryGroupByName', query_group_by_pname),
]
修改主路由:
path('myforms/',include("myforms.urls")),
path('persontest/',include("persontest.urls")),