gpt4 book ai didi

python - Django 中的外键。如何正确创建模型

转载 作者:行者123 更新时间:2023-11-30 21:53:47 26 4
gpt4 key购买 nike

我是 Django 新手,我正在尝试为我正在开发的网站创建一个模型。到目前为止,我知道如何实现我想要的一切,但有一件事我无法正确理解。所以我的想法如下,在模型中:

一个类“Class”,可以根据管理员的需要拥有任意数量的“老师”和“学生”。我已经使用外键玩了一段时间,但我只能设法将一个学生和老师关联到一个类(class),每当我想显示“类(class)”信息时,就没有学生或老师可以显示。

from django.db import models
from datetime import datetime
# Create your models here.

LANGUAGE_CHOICES = (
('english','ENGLISH'),
('spanish', 'SPANISH'),
('german','GERMAN'),
('french','FRENCH'),
('portuguese','PORTUGUESE'),
)

class Clase(models.Model):
name = models.CharField(max_length=300)
language = models.CharField(max_length=10, choices=LANGUAGE_CHOICES, default='english')

def __str__(self):
return self.name


class Student(models.Model):
name = models.CharField(max_length=300)
clase = models.ForeignKey(Clase, on_delete=models.CASCADE)


def __str__(self):
return self.name


class Teacher(models.Model):
name = models.CharField(max_length=300)
total_earnings = models.IntegerField()
month_earnings = models.IntegerField()
clase = models.ForeignKey(Clase, on_delete=models.CASCADE)


def __str__(self):
return self.name

最佳答案

由于 Class 可以拥有“所需数量的“教师”和“学生””,因此使用 ManyToManyFields 定义关系可能是有意义的。我假设一个老师和一个学生可以有超过1个类(class)

class Clase(models.Model):
name = models.CharField(max_length=300)
language = models.CharField(max_length=10, choices=LANGUAGE_CHOICES, default='english')
students = models.ManyToManyField(Student)
teachers = models.ManyToManyField(Teacher)

def __str__(self):
return self.name

然后您可以删除 StudentTeacher 模型上的外键。现在,当您在管理员中编辑类(class)时,您应该能够添加任意数量的学生和教师

关于python - Django 中的外键。如何正确创建模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59524527/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com