小编mig*_*hal的帖子

在admin中以内联形式限制select中的外键选项

该模型的逻辑是:

  • A Building有很多Rooms
  • A Room可能在另一个内部Room(例如,一个壁橱 - 在'self'上的ForeignKey)
  • A Room只能Room在同一建筑物内的另一个内部(这是棘手的部分)

这是我的代码:

#spaces/models.py
from django.db import models    

class Building(models.Model):
    name=models.CharField(max_length=32)
    def __unicode__(self):
        return self.name

class Room(models.Model):
    number=models.CharField(max_length=8)
    building=models.ForeignKey(Building)
    inside_room=models.ForeignKey('self',blank=True,null=True)
    def __unicode__(self):
        return self.number
Run Code Online (Sandbox Code Playgroud)

和:

#spaces/admin.py
from ex.spaces.models import Building, Room
from django.contrib import admin

class RoomAdmin(admin.ModelAdmin):
    pass

class RoomInline(admin.TabularInline):
    model = Room
    extra = 2

class BuildingAdmin(admin.ModelAdmin):
    inlines=[RoomInline]

admin.site.register(Building, BuildingAdmin)
admin.site.register(Room)
Run Code Online (Sandbox Code Playgroud)

内联将仅显示当前建筑物中的房间(这是我想要的).但问题是,对于inside_room下拉列表,它会显示Rooms表中的所有房间(包括其他建筑物中的房间).

在内联中rooms,我需要将inside_room选择限制rooms在当前building(当前正由主BuildingAdmin …

django inline admin foreign-keys limit

69
推荐指数
7
解决办法
3万
查看次数

标签 统计

admin ×1

django ×1

foreign-keys ×1

inline ×1

limit ×1