私はPython/DjangoにAccessアプリケーションを移植しています。 SchoolInfoテーブルとCampusテーブルがあり、SchoolInfoテーブルを指す外部キーがあります。 Accessでは、私はCampusサブフォーム(連続)をSchoolInfoフォームに埋め込んでいます。これは、School_IDを正しく指している一致フィールドが定義されています。だから学校1では私はその学校のキャンパスだけを示します。Django管理者のTabularInlineに関する問題
Djangoでは、私はSchoolInfoテーブルを管理者に追加し、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の新機能ですので、これを修正する方法を理解できません。私は自分の選択肢がインラインで何らかのフィルタリングをしていると思います。モデルから一意=真を取り出して、インラインに「追加」リンクを復元する方法を考えます。
これを修正する方法はありますか? おかげで...
あなたのCapmusesInlineのextra = 0は新しいレコードを追加するための余分な空のレコードを削除します – Serjik