Только для чтения табличное встроенное поле fk с дополнительными возможностями - PullRequest
3 голосов
/ 26 октября 2011

У меня есть таблица пересечения / прохода, используемая в качестве встроенного в администраторе django. Встроенный имеет внешний ключ для другой модели, указанный в раскрывающемся меню. Я могу сделать поле доступным только для чтения, установив переменную readonly_fields, но хочу разрешить добавление новых объектов внешнего ключа путем добавления. Поэтому, используя приведенный ниже пример, я хотел бы иметь возможность добавлять строки Building_Room через встроенные функции, просто не иметь возможности выбирать какие-либо существующие клавиши Room, не нажимая «+» и не добавляя новую с помощью всплывающего окна администрирования Room. Должен ли я сделать это с помощью пользовательских шаблонов? Большое спасибо.

models.py

class Building(models.Model):
    rooms = models.ManyToManyField('Room', null=True, through="Building_Room")
    ...
class Room(models.Model):
    ...
class Building_Room(models.Model):
    building = models.ForeignKey(Building)
    room = models.ForeignKey(Room)

admin.py

class Building_Room_Inline(admin.TabularInline):
    model = Building_Room
    readonly_fields = ('building',)
    ...
class Building_Admin(admin.ModelAdmin):
    inlines = (Building_Room_Inline,)
    ...
...