Django 1.11 - Добавить условие в поле в Admin - PullRequest
0 голосов
/ 03 апреля 2019

Проблема

У меня есть модель (Challenge), которая имеет отношение ко многим к пользователю.Пользовательская модель имеет отношение один к одному с профилем.Профиль используется для хранения пользовательских материалов о пользователе.В администраторе Django в форме создания должны отображаться только пользователи с полем is_partner True в своей модели профиля.Можно ли добиться этого, не создавая еще одну таблицу для хранения партнеров?

Модель

class Challenge(models.Model):
    partners = models.ManyToManyField(User)
    participants = models.ManyToManyField(Team)
    details = models.TextField(max_length=512, default=None, blank=True)
    description = models.TextField(max_length=512, default=None, blank=True)
    documentation = models.TextField(max_length=512, default=None, blank=True)
    prize = models.TextField(max_length=512, default=None, blank=True)
    live = models.BooleanField(default=False)

1 Ответ

1 голос
/ 03 апреля 2019

Вы должны создать пользовательскую форму, которая проверяет логику, которую вы упоминаете, чтобы сохранить или нет отношение m2m.в соответствии с документами

class MyModelAdmin(admin.ModelAdmin):
    def get_queryset(self, request):
        qs = super(MyModelAdmin, self).get_queryset(request)
        if request.user.is_superuser:
            return qs
        return qs.filter(author=request.user)
...