在 Django 中,要根据用户所属不同公司,将数据存放在各自公司的表内,可以通过以下步骤实现:
1.首先,在 settings.py
文件中,为每个公司创建一个数据库表。例如,为两家公司创建两个表:company_a
和 company_b
。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
},
'company_a': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'company_a_db.sqlite3',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
},
'company_b': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'company_b_db.sqlite3',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
},
}
2.在 settings.py
文件中,为每个公司指定一个数据库。
DATABASE_ROUTERS = [
'your_app.routers.CompanyARouter',
'your_app.routers.CompanyBRouter',
]
3.创建一个自定义的视图,继承 django.views.generic.View
。在这个视图函数中,根据用户的所属公司,将数据存放在各自公司的表内。
from django.http import JsonResponse
from django.views.generic.view import View
from .models import YourModel
class CompanyARouter(View):
def post(self, request):
# 处理公司A的数据
data = request.POST
YourModel.objects.create(**data)
return JsonResponse({"message": "数据已保存"})
class CompanyBRouter(View):
def post(self, request):
# 处理公司B的数据
data = request.POST
YourModel.objects.create(**data)
return JsonResponse({"message": "数据已保存"})
4.在 urls.py
文件中,将视图与 URL 关联起来。
from django.urls import path
from . import views
urlpatterns = [
path('company_a/', views.CompanyARouter.as_view(), name='company_a'),
path('company_b/', views.CompanyBRouter.as_view(), name='company_b'),
]
5.在模型中,可以通过 company
字段来区分数据属于哪个公司。
from django.db import models
class YourModel(models.Model):
company = models.CharField(max_length=10, choices=[('company_a', '公司A'), ('company_b', '公司B')])
# 其他字段
6.最后,在你的应用中,根据用户所属公司,将数据发送到对应的视图处理。
// 示例:使用 axios 发送 POST 请求
axios.post('http://localhost:8000/company_a/', data)
.then(response => {
console.log(response.data);
})
.catch(error => {
console.log(error);
});
通过以上步骤,可以实现在 Django 中根据用户所属不同公司,将数据存放在各自公司的表内。
声明:如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。None#python87.com