我正在將一個Access應用程序移植到Python/Django。有一個SchoolInfo表和一個帶有指向SchoolInfo表的外鍵的校園表。在Access中,我將校園子表單(連續)嵌入到SchoolInfo表單中,其中匹配字段正確指向School_ID。因此,對於學校1我只顯示該校的校園。Django Admin中的TabularInline問題
在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,但現在的問題是:
還有多所學校在數據庫中,每個都有一個或多個校園。 TabularInline正確顯示了在校學校的校園或校園,但它也有幾個空白記錄(我假設它與其他學校的校園記錄有關)。
如果我將「unique = True」添加到外鍵(如上面的模型所示),空白記錄消失,並且看起來都很好。不幸的是,我也放棄了內聯底部的鏈接來添加一個新的校園。
我是非常新的Python/Django,所以不能弄清楚如何解決這個問題。我想我的選擇是內聯過濾的一些類型(並從模型中取出unique = True),或者將其保留並找出如何將「添加」鏈接恢復到內聯。
有沒有關於如何解決這個問題的建議? 謝謝...
extra = 0在您的CapmusesInline將刪除多餘的空記錄,這是添加新記錄 – Serjik