[英]How to make a model having two foreign Key relations with the different models
我制作了一個應用,其中制作了以下三個模型:
from django.db import models
class Class_Mgmt(models.Model):
class_name = models.CharField(max_length=8,null=False,blank=False)
def __str__(self):
return self.class_name
class Section_Mgmt(models.Model):
stu_class=models.ForeignKey(Class_Mgmt)
section_name=models.CharField(max_length=1,null=False,blank=False)
def __str__(self):
return self.section_name
class Teacher_Mgmt(models.Model):
teacher_name=models.CharField(max_length=50,null=False,blank=False)
tea_class=models.ForeignKey(Class_Mgmt)
tea_section=models.ForeignKey(Section_Mgmt)
def __str__(self):
return self.teacher_name
在這里, Section_Mgmt
類與Class_Mgmt
有一個ForeignKey關系,這意味着當我運行項目並添加新的section_name
,將從所有現有類的下拉列表中選擇class_name
。 在該項目中運行良好。 但是,在Teacher_Mgmt
模型中,我想這樣做:當我在表單中輸入新老師時,然后從下拉列表中選擇現有班級時,它將僅顯示所選班級中可用的部分,因為, section_Mgmt
模型也與class_Mgmt
模型具有外鍵關系。
目前,當我運行該項目並輸入新老師,並從顯示所有現有班級的下拉列表中選擇一個班級時,則將顯示所有節,而不是僅顯示該班級中可用的那些節。
Django沒有內置此功能,但是您可以使用django-smart-selects 。 只需安裝此庫,然后將Teacher_Mgmt更改為以下代碼:
from smart_selects.db_fields import ChainedForeignKey
class Teacher_Mgmt(models.Model):
teacher_name=models.CharField(max_length=50,null=False,blank=False)
tea_class=models.ForeignKey(Class_Mgmt)
tea_section=ChainedForeignKey(
Section_Mgmt,
chained_field="tea_class",
chained_model_field="tea_class",
show_all=False,
auto_choose=True
)
def __str__(self):
return self.teacher_name
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.