Зависимый встроенный внешний ключ по отношению к parent_object на лету django - PullRequest
0 голосов
/ 08 января 2019

друг спасибо заранее за помощь. Я хотел иметь зависимую inline по отношению к родительскому объекту и ограничить набор запросов в inlines с помощью filter в администраторе django, и я пытаюсь убедиться, что inlines загружаются асинхронно (т.е. без перезагрузки или сохранения страницы) при изменении панели администратора форма.

admin.py

class AttendanceRecordInline(admin.TabularInline):
    model = AttendanceRecord

@admin.register(Level)
    class LevelAdmin(admin.ModelAdmin):
         pass

@admin.register(Student)
    class StudentAdmin(admin.ModelAdmin):
         pass

@admin.register(Attendance)
class AttendanceAdmin(admin.ModelAdmin):
     inlines = [
        AttendanceRecordInline,
     ]

models.py

class Level(models.Model):
    name = models.CharField(max_length=255, null=True, blank=True)

    def __str__(self):
        return self.name


class Student(models.Model):
    name = models.CharField(max_length=255, null=True, blank=True)
    level = models.ForeignKey(Level, on_delete=models.CASCADE)

    def __str__(self):
        return self.name

class Attendance(models.Model):
    level = models.ForeignKey(Level, on_delete=models.CASCADE)
    date = models.DateTimeField(default=datetime.now)

    def __str__(self):
        return "Attendance of {}-{}".format(self.level, self.date.strftime('%B %d, %Y'))


class AttendanceRecord(models.Model):
    attendance = models.ForeignKey(Attendance, on_delete=models.CASCADE)
    student = models.ForeignKey(Student, on_delete=models.CASCADE)
    status = models.CharField(max_length=30, choices=ATTENDANCE_STATUS)

    def __str__(self):
        return "{}-{}-{}".format(self.attendance.date.strftime('%Y-%m-%d'), self.student, self.status)

Некоторые выводы:

  1. Значение нагрузки Ajax с учетом соотношения сторон form, event listener and template
  2. Пробовал def formfield_for_foreignkey(self, db_field, request, **kwargs): и все работает, но результат не асинхронный
  3. переопределение другой функции, результаты не асинхронные

    • get_formset
    • get_formsets_with_inlines
    • get_inline_instances

Проблема: enter image description here

Вывод: Первая из находок, похоже, работает в моем сценарии. Это хорошая практика для создания поля Foreignkey с помощью AJAX?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...