Как получить текущий идентификатор пользователя и сохранить его в TabularInline из BaseTable с помощью пользовательского миксина в django admin.Значение, передаваемое по модели, равно NULL.
models.py
class BaseTable(models.Model):
created_at = models.DateTimeField(auto_now_add=True, editable=False)
modified_at = models.DateTimeField(auto_now=True, editable=False)
created_by = models.ForeignKey(User, on_delete=models.PROTECT, related_name='%(class)s_createdby', editable=False)
modified_by = models.ForeignKey(User, on_delete=models.PROTECT ,related_name='%(class)s_modifiedby', editable=False)
class Meta:
abstract = True
class CheckOutItem(BaseTable): // inherited
admin.py
Первый миксин
class AuditMixin(object):
def save_model(self, request, obj, form, change):
if obj.created_by_id is None:
obj.created_by_id = request.user.id
obj.modified_by_id = request.user.id
super(AuditMixin, self).save_model(request, obj, form, change)
... И модель администратора
class CheckOutItemInline(AuditMixin, admin.TabularInline):
model = CheckOutItem
extra = 1
@admin.register(CheckOut)
class CheckoutAdmin(AuditMixin, admin.ModelAdmin):
model = CheckOut
Журнал ошибок трассировки.
Ошибка IntegrityEr / admin / system / checkout / add /(1048, «Столбец« create_by_id »не может быть пустым») Метод запроса: URL-адрес POST-запроса: http://192.168.4.100/admin/system/checkout/add/ Версия Django: 2.1.1 Тип исключения: IntegrityError Значение исключения: (1048, «Столбец« create_by_id »не может быть пустым»") Расположение исключения: /home/ricardo/www/developer/python/bmhair/env/lib/python3.6/site-packages/django/db/backends/mysql/base.py в execute, строка 76 Исполняемый файл Python: /usr / bin / python3 Версия Python: 3.6.7 Python Путь:
['/ home / ricardo / www / developer / python / bmhair / framework', '/ home / ricardo / www / developer / python / bmhair / env/lib/python3.6/site-packages ',' /usr/lib/python36.zip ',' /usr/lib/python3.6 ',' /usr/lib/python3.6/lib-dynload ','/usr/local/lib/python3.6/dist-packages ',' / usr / lib / python3 / dist-пакетов '] Время сервера: Seg, 21 января 2019 00:06:27 -0400
Local Vars
args ("' 2019-01-21 04: 06: 27.441238 '"," 2019-01-21 04: 06: 27.441335' ", 'NULL', 'NULL', '11', '2', '' 1.00 '", "'35.00 '","' 35 .00 '") db <_mysql.connection open to' localhost 'в 7f1cc050e338> exc query (b'INSERT INTO system_checkoutitem
(created_at
, modified_at
, created_by_' b'id
, modified_by_id
,checkout_id
, service_id
, quantity
, unity_value' b"
, total_value
) ЗНАЧЕНИЯ ('2019-01-21 04: 06: 27.441238', '2019-01-21 04:06:27 "b".441335 ', NULL, NULL, 11, 2,' 1,00 ', '35,00', '35,00 ') ")