получить текущего пользователя для поля «made_by» в классе модели - PullRequest
0 голосов
/ 18 октября 2018

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

created_by = models.ForeignKey(User, default=request.user, null=True, blank=True, on_delete=models.DO_NOTHING, related_name='created_by')

Я пытался переопределить метод save (), но он тоже не работает, у кого-нибудь есть опыт по этому вопросу?

Заранее большое спасибо за вашу помощь

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Если кто-то сталкивался с этой проблемой, я последовал совету a_k_v и сделал это в своих взглядах.Вот как я это сделал:

Я добавил два поля в своем классе:

class Class(models.Model):
    created_by = models.ForeignKey(User, on_delete=models.DO_NOTHING, blank=True, null=True, related_name='create')
    updated_by = models.ForeignKey(User, on_delete=models.DO_NOTHING, blank=True, null=True, related_name='update')

, а затем создал функцию:

def created_updated(model, request):
    obj = model.objects.latest('pk')
    if obj.created_by is None:
        obj.created_by = request.user
    obj.updated_by = request.user
    obj.save()

, чтобы получить ее в моих представлениях.py:

    if request.method == 'POST':
    form = AddVacation(request.POST)
    if form.is_valid:
        form.save()
        created_updated(Vacation, request)
0 голосов
/ 18 октября 2018

См. Официальный документ.Это объяснило это довольно хорошо.Пример также есть

from django.views.generic.edit import CreateView
from myapp.models import Author

class AuthorCreate(CreateView):
    model = Author
    fields = ['name']

    def form_valid(self, form):
        form.instance.created_by = self.request.user
        return super().form_valid(form)

https://docs.djangoproject.com/en/2.1/topics/class-based-views/generic-editing/#models-and-request-user

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