Как получить и сохранить текущий идентификатор пользователя в TabularInline из BaseTable в моделях Django - PullRequest
0 голосов
/ 21 января 2019

Как получить текущий идентификатор пользователя и сохранить его в 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 ') ")

...