2017-05-09 1 views
0

TabularInlineエディタを使用して、モデルの関係を別のモデルに編集できるようにしています。それはマップテーブルを通して多対多です。 djangoにtabularInlineの行のマップテーブル自体へのアイコンリンクを入れる方法はありますか?中間テーブルオブジェクトを編集できるようにDjango TabularInlineを設定する方法

たとえば、Machine2PartによってMachineとPartがマップされていて、Machine内でTabularInlineを使用してPartsの編集を行う場合、プルダウンメニューが表示されます私のMachine2Part管理フォームがこの場所からアクセスできるようにしたいフィールド編集を持っているため、この関係の背後にあるMachine2Partオブジェクト/行の管理フォームに私を連れて行くリンク。次の各行に「変更」のリンクを追加します

class Part (models.Model): 
    name = models.CharField(max_length=45) 

    class Meta: 
     db_table = "part" 

    def __str__ (self): 
     return self.name 

class Machine (models.Model): 
    name = models.CharField(max_length=45) 
    parts = models.ManyToManyField(Part, through='Machine2Part') 
    class Meta: 
     db_table = "machine" 

    def __str__ (self): 
     return self.name 


class Machine2Part (models.Model): 
    machine = models.ForeignKey(Machine,db_column='machineId') 
    part = models.ForeignKey(Part,db_column='partId') 
    class Meta: 
     db_table = "machine2part" 

class Machine2PartInline (admin.TabularInline): 
    # fields = ['name'] 
    model = Machine2Part 

class MachineAdmin (admin.ModelAdmin): 
    inlines = [Machine2PartInline] 

admin.site.register(Machine, MachineAdmin) 
admin.site.register(Part) 
admin.site.register(Machine2Part) 

答えて

0

show_change_link = TrueのモデルMachine2Partはあなたが表示するためにこれを使用することができます(FKS以外の)追加のフィールドが含まれている場合

class Machine2PartInline (admin.TabularInline): 
    # fields = ['name'] 
    model = Machine2Part 
    show_change_link = True 
0

TabularInlineインライン内のフィールド、追加のリンクの必要はありません。

class Machine2PartInline (admin.TabularInline): 
    model = Machine.parts.through 

See django docs reference

+0

私は中間テーブルの上に余分なフィールドを表示したい場合ええ、それは良いでしょう。残念ながら、この中間のMachine2Partに関連する他のテーブルのいくつかのフィールドがあります(つまり、中間テーブルにはMachineとPartだけでなく、外部キーもあります)。望ましい。 – dam

関連する問題