2016-11-11 8 views
0

私は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の新機能ですので、これを修正する方法を理解できません。私は自分の選択肢がインラインで何らかのフィルタリングをしていると思います。モデルから一意=真を取り出して、インラインに「追加」リンクを復元する方法を考えます。

これを修正する方法はありますか? おかげで...

+1

あなたのCapmusesInlineのextra = 0は新しいレコードを追加するための余分な空のレコードを削除します – Serjik

答えて

0

が、それはまた、(私は他の学校のための キャンパスレコードに関連していると仮定)、いくつかの空白のレコードを持っています。

「空白」のレコードは、学校に新しいキャンパスを追加するためのものです。 CampusInlineの "extra"属性を使用して空白行の数を制御することができます。

私は、外部キー(モデル上記 に示すように)に「真=ユニーク」を追加した場合は、空白のレコードが消え、すべてがよさそうです。残念ながら、 新しいキャンパスを追加するために、インラインの最下部にあるリンクも失っています。

「学校」フィールドに「ユニーク」を追加すると、学校がキャンパステーブルに1回しか表示されない可能性があります。これは、(通常)外来キーにはあまり意味がありません。

+0

Chrisに感謝します。それは簡単だった。インラインセクションの下にあるドキュメントでそのことを確認できませんでした。追加に4本の空白行があるという奇妙なデフォルトのようです。 Re:ユニーク。私はキャンパス内の外殻のキー欄にそれを入れて、1つ以上の学校にキャンパスが現れないようにしたいと考えました。私の間違い。ソリューションに感謝します。 – RMittelman

関連する問題