在 Django [数据库] 中链接多个模型的更好方法 - ManyToManyFields、ForeignKey 和 CharFields

Posted

技术标签:

【中文标题】在 Django [数据库] 中链接多个模型的更好方法 - ManyToManyFields、ForeignKey 和 CharFields【英文标题】:Better way of linking multiple models in Django [database] - ManyToManyFields, ForeignKey and CharFields 【发布时间】:2021-02-12 13:23:55 【问题描述】:

我想将Subject 模型与Class 链接起来,这样Class 模型的每个学生都将在Subject models 中包含用户通过connect_class 链接的相同主题。

school 应用的 models.py 内部。

from django.db import models
from accounts.models import School


class Class(models.Model):
    connect_school = models.ForeignKey(School, on_delete=models.SET_NULL, null=True)
    class_list = models.CharField(max_length=95)
    def __str__(self):
            return self.class_list

class Subject(models.Model):
    connect_class = models.ForeignKey(Class, on_delete=models.SET_NULL, null=True)
    subjects = models.CharField(max_length=95, null=True)
    def __str__(self):
        return self.subjects

student app 的 models.py 内部:

from django.db import models
from django.utils import timezone
import nepali_datetime
from school.models import Class, Subject
from accounts.models import School
connect_school = models.ForeignKey(School, on_delete=models.CASCADE, null=True)
...name,gender, etc. ...
Class = models.ForeignKey(Class, on_delete=models.CASCADE, null=True)
subject = models.ManyToManyField(Subject)

accounts 的 models.py 内部。

from django.db import models
from django.utils import timezone
import nepali_datetime

# from django.contrib.auth.models import User
# Create your models here.

class School(models.Model):
    school_name = models.CharField(max_length=50)
    ...
    username = models.CharField(max_length=100)
    password = models.CharField(max_length=95)
    ...
    principal = models.CharField(max_length=150, default='')
    ....

【问题讨论】:

这里给出了 Django 的重命名思路:Django Renaming IDEAS 【参考方案1】:

第 1 步:

首先,迁移基本模型,以免它们产生任何冲突。为了您的关心,您需要迁移 School 模型,因为此模型与 Foreign Key 与其他各种模型相关联。

python manage.py migrate school

school 是您的 Djang 应用的 app_name。

第 2 步:

之后,您需要迁移模型的其他分支。

【讨论】:

以上是关于在 Django [数据库] 中链接多个模型的更好方法 - ManyToManyFields、ForeignKey 和 CharFields的主要内容,如果未能解决你的问题,请参考以下文章

Django:从管理模型到文档的超链接

Django:如何使用多个数据库?

Django 更好地加入

django 模型创建连接到 mssql

Django DetailView 动态模型

如何处理 Django 模型中的循环关系?