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