[英]Django many to one operations
我的模型中有兩個表,如下所示:
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”來訪問這兩個表。 我正在尋找的是一個新表,該表同時包含兩個表並給出如下所示(帶有示例): 在此處輸入圖像描述
我想要這樣做,以便執行以下功能:發布,刪除/ grade / {grade_value} / name / {name_value}
另外,獲取/ grade / {grade_value}
這樣我就可以獲得有關該研究生價值的所有學生的信息。
我知道我需要多對一使用,並且我也閱讀了文檔,嘗試了幾次,但沒有成功。 提前致謝。
設置屬性grade
模型的Student
作為ForeignKey的到模型Grade
。
class Grade(models.Model):
grade = models.IntegerField()
class Student(models.Model):
name = models.CharField(max_length=255)
grade = models.ForeignKey(Grade)
rollno = models.BigIntegerField()
這就是我要做的:
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')
按照慣例,類名應以大寫字母開頭。
參考文獻:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.