我的模型中有两个表,如下所示:
class grade(models.Model):
# Class of student
grade = models.CharField(max_length=255, null=True, unique = True)
class student(models.Model):
name = models.CharField(max_length=255)
grade = models.CharField(max_length=255)
rollno = models.BigIntegerField()
可以看出,两个表中的等级都是相同的。 我可以分别使用第一个表的URL“ / grade”和第二个表的“ / name”来访问这两个表。 我正在寻找的是一个新表,该表同时包含两个表并给出以下内容(带有示例): enter image description here
我想要这样做,以便可以执行以下功能: 发布,删除/ grade / {grade_value} / name / {name_value}
另外, 获取/ grade / {grade_value}
这样我就可以获得所有具有那个Grad值的学生的信息。
我知道我需要多对一使用,并且我也阅读了文档,尝试了几次,但是没有成功。 预先感谢。
答案 0 :(得分:0)
将模型grade
的属性Student
设置为模型Grade
的{{3}}。
class Grade(models.Model):
grade = models.IntegerField()
class Student(models.Model):
name = models.CharField(max_length=255)
grade = models.ForeignKey(Grade)
rollno = models.BigIntegerField()
答案 1 :(得分:0)
这就是我要做的:
models.py:
class Grade(models.Model):
grade = models.CharField(max_length=255, primary_key=True)
class Student(models.Model):
name = models.CharField(max_length=255)
grade = models.ForeignKey(grade, on_delete=models.CASCADE)
rollno = models.BigIntegerField()
class Third(models.Model):
grade = models.OneToOneField(grade, on_delete=models.CASCADE, primary_key=True)
stds = models.TextField()
views.py:
from django.forms.models import model_to_dict
def serialize(students):
s_list = []
fields = ['name', 'grade', 'rollno']
for student in students:
s_list.append(model_to_dict(student, fields=fields))
return s_list
def index(request):
g1 = Grade.objects.get(grade='9')
g2 = Grade.objects.get(grade='10')
students = Student.objects.filter(grade=g1)
Third.objects.create(grade=g1, stds=serialize(students))
students = Student.objects.filter(grade=g2)
Third.objects.create(grade=g2, stds=serialize(students))
return render(request, 'index.html')
按照惯例,类名应以大写字母开头。
参考文献: