Как получить и назначить текущий пользовательский объект полю в Wagtail admin? - PullRequest
0 голосов
/ 11 июля 2019

У меня есть несколько моделей Django, которые я отображаю в админе, используя модель тмина.немногие поля в моделях ссылаются на пользовательскую модель.Поскольку я не создаю форму / страницу и она обрабатывается трясогузкой, как передать текущий пользовательский объект в поле при его сохранении?То есть для созданных и обновленных полей должны быть назначены объекты текущего пользователя.

См. Фрагмент кода ниже, в настоящее время я назначаю пользователя вручную путем запроса, вместо этого я хотел бы получить текущийпользователь.

from django.db import models
from django.conf import settings
from django.contrib.auth import get_user_model

from wagtail.admin.forms import WagtailAdminPageForm

STATUS_CHOICES = (
    (1, 'Active'),
    (2, 'Inactive')
)


class BasePageForm(WagtailAdminPageForm):

    def save(self, commit=True):
        auth_user_model = get_user_model()
        default_user = auth_user_model.objects.get(username='admin')
        page = super().save(commit=False)

        if not page.pk:
            page.created_by = default_user
            page.updated_by = default_user
        else:
            page.updated_by = default_user

        if commit:
            page.save()
        return page


class BaseModel(models.Model):
    created_by = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        on_delete=models.CASCADE,
        related_name='created%(app_label)s_%(class)s_related'
    )
    created_at = models.DateTimeField(auto_now_add=True)
    updated_by = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        on_delete=models.CASCADE,
        related_name='updated%(app_label)s_%(class)s_related'
    )
    updated_at = models.DateTimeField(auto_now=True)
    status = models.IntegerField(choices=STATUS_CHOICES, default=1)

    class Meta:
        abstract = True  # Set this model as Abstract

    base_form_class = BasePageForm
...