簡體   English   中英

Django Admin中TabularInline的問題

[英]Problems with TabularInline in Django Admin

我正在將Access應用程序移植到Python / Django。 有一個SchoolInfo表和一個Campuses表,其中的外鍵指向SchoolInfo表。 在Access中,我將一個Campuss子表單(連續)嵌入到SchoolInfo表單中,其中定義的匹配字段正確指向School_ID。 因此,對於學校1,我僅顯示該學校的校園。

在Django中,我將SchoolInfo表添加到了Admin,並嘗試使用TabularInline復制Access UI。 以下是模型和管理員的摘要:

class Schoolinfo(models.Model):
    school_id = models.AutoField(db_column='School_ID', primary_key=True)  # Field name made lowercase.
    schoolcode = models.CharField(db_column='SchoolCode', max_length=10)  # Field name made lowercase.
    schoolname = models.CharField(db_column='SchoolName', max_length=50, blank=True, null=True)  # Field name made lowercase.

class Campuses(models.Model):
    campus_id = models.AutoField(db_column='Campus_ID', primary_key=True)  # Field name made lowercase.
    campusno = models.IntegerField(db_column='CampusNo', default=1)  # Field name made lowercase.
    schoolcode = models.CharField(db_column='SchoolCode', max_length=10)  # Field name made lowercase.
    school = models.ForeignKey('Schoolinfo', models.DO_NOTHING, db_column='School_ID', unique=True)  # Field name made lowercase.#  school = models.IntegerField(db_column='School_ID')  # Field name made lowercase.
    campusname = models.CharField(db_column='CampusName', max_length=15, blank=True, null=True)  # Field name made lowercase.

class CampusesInline(admin.TabularInline):
    model = Campuses

admin.site.register(Campuses) 

class SchoolInfoAdmin(admin.ModelAdmin):
    fields = (
    ('schoolcode', 'schoolname'), ('contactname', 'contacttitle'), ('contactphone', 'contactemail'), 
    ('clockhoursschool', 'schoolsendsawardletters'), ('tin_no', 'duns_no'), ('pell_id', 'ope_id'))

    save_on_top = True
    inlines = [CampusesInline,]

admin.site.register(Schoolinfo, SchoolInfoAdmin)

當我選擇學校進行編輯時,它會正確顯示學校字段,然后顯示校園的TabularInline,但這是問題所在:

數據庫中有多所學校,每所都有1個或多個校園。 TabularInline可以正確顯示活動學校的一個或多個校園,但它也有幾個空白記錄(我認為與其他學校的校園記錄有關)。

如果我在外鍵上添加“ unique = True”(如上面的模型所示),則空白記錄將消失,並且所有記錄看起來都很好。 不幸的是,我也松了內聯底部的鏈接以添加新的園區。

我是Python / Django的新手,所以不知道如何解決此問題。 我想我的選擇是內聯中的某種類型的過濾(並從模型中取出unique = True),或者將其保留下來並找出如何將“ add”鏈接還原到內聯中。

關於如何解決此問題,有什么建議嗎? 謝謝...

但它也有幾個空白記錄(我認為這些記錄與其他學校的校園記錄有關)。

這些“空白”記錄用於向學校添加新的校園。 您可以在CampusInline上使用“額外”屬性來控制空白行的數量。

如果我在外鍵上添加“ unique = True”(如上面的模型所示),則空白記錄將消失,並且所有記錄看起來都很好。 不幸的是,我也松了內聯底部的鏈接以添加新的園區。

如果將“唯一”添加到“學校”字段,則意味着一所學校只能在“校園”表中出現一次。 對於外鍵,這通常沒有多大意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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