Как работать с динамическими данными в панели администратора? - PullRequest
2 голосов
/ 19 июля 2011
class Message(models.Model):

    date = models.DateField()
    user = models.ForeignKey(UserEx)
    groups = models.ManyToManyField(Group)
    main_category = models.ForeignKey(MainCategories)
    sub_category = models.ForeignKey(SubCategories)

Я хочу динамическое заполнение некоторых полей.Итак, у меня есть несколько вопросов по этому поводу.

  1. Как получить доступ к этим полям?Очевидно, что поле по умолчанию модели не будет работать с динамическими данными (я попытался создать поле по умолчанию - без ошибок, без результата).
  2. Как фильтровать группы?У моего пользователя такое же поле с группами, поэтому я хочу разрешить ему редактировать и отображать сообщения только для этих групп.

Ну и последний вопрос - возможно, его будет легче создатьмоя собственная админка?Но действительно страшно думать о реализации сортировки и отображения вещей, которые действительно удобны здесь, в панели администратора.

1 Ответ

3 голосов
/ 19 июля 2011

Вы делаете это, переопределяя ModelForm:

class MessageAdminForm(forms.ModelForm):
    def __init__(self, *arg, **kwargs):
        super(MessageAdminForm, self).__init__(*args, **kwargs)

        # set initial values this way
        self.initial['user'] = User.objects.get(username='bob')

        # set choices this way
        self.fields['groups'].choices = [(g.id, g) for g in Groups.objects.all()]

class MessageAdmin(admin.ModelAdmin):
    form = MessageAdminForm
    # other stuff here
...