在 Django 中,要根据用户所属不同公司,将数据存放在各自公司的表内,可以通过以下步骤实现:

1.首先,在 settings.py 文件中,为每个公司创建一个数据库表。例如,为两家公司创建两个表:company_acompany_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