簡體   English   中英

如何建立一個具有不同模型的兩個外鍵關系的模型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM