在 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的主要内容,如果未能解决你的问题,请参考以下文章