В моем приложении две модели Django.Модель проекта и другая модель для регистрации создания или удаления проектов.Когда проект создается, я хотел бы заполнить поле created_by
в модели проектов текущим вошедшим пользователем и в то же время создать экземпляр модели регистратора с source
, являющимся тем же вошедшим пользователем..
Я также хотел бы заполнить источник в модели регистратора тем, кто в данный момент вошел в систему при удалении проекта.
Моя модель проекта ...
class Projects(models.Model):
title = models.CharField(max_length=40)
description = models.TextField()
budget = models.PositiveIntegerField()
created_by = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True, on_delete=models.SET_NULL)
@receiver(post_save, sender=Projects, dispatch_uid="update_logs")
def update_logs(sender, **kwargs):
instance = kwargs['instance']
created = kwargs['created']
if created:
log_title = 'Project creation'
comments = f'Project "{instance.title}" with a budget of ${instance.budget} was added'
Logger.objects.create(title=log_title, comments=comments, source=instance.created_by)
else:
instance.save()
@receiver(post_delete, sender=Projects, dispatch_uid="update_logs_deletion")
def update_logs_deletion(sender, **kwargs):
instance = kwargs['instance']
log_title = 'Project deleted'
comments = f'Project "{instance.title}" with a budget of ${instance.budget} was deleted'
Logger.objects.create(title=log_title, comments=comments)
Моя модель Logger ...
class Logger(models.Model):
title = models.CharField(max_length=40)
comments = models.TextField()
source = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True, on_delete=models.SET_NULL)
Внутри файла admin.py у меня есть следующее ...
class ProjectsAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
if not obj.pk:
obj.created_by = request.user
super().save_model(request, obj, form, change)
class LoggerAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
if not obj.pk:
obj.source = request.user
super().save_model(request, obj, form, change)
У меня есть эта структура модели для нескольких моделей.Иногда при создании поле created_by
в модели Projects заполняется, а регистратор source
- нет.Иногда поле created_by
не заполняется, а source
в регистраторе.При удалении source
никогда не заполняется. Я не получаю.