Как получить логин пользователя, который добавил новую позицию и сохранить ее с новой записью - PullRequest
0 голосов
/ 28 апреля 2020

Я только начинаю приключение с Django. Я почти закончил свое первое очень маленькое приложение, но мне нужно решить одну маленькую проблему.

Я хотел бы знать, кто добавил новую запись в базу данных, и сохранить его логин.

Нет проблем, чтобы показать логин на сайте ... Проблема в том, что я не знаю, как получить логин пользователя, который добавил новую позицию, и сохранить его с новой записью.

Поскольку мое приложение не на английском языке sh Я подготовил его наименьшую версию:

мой models.py файл:

from django.db import models
from datetime import datetime
import socket
import getpass
from django.contrib.auth.models import User


class City(models.Model):
    city = models.CharField(max_length=40)
    description = models.CharField(max_length=200, null=True, blank=True)

    def __str__(self):
        return self.city


class Workers(models.Model):

    hostname = socket.gethostname()
    login_username = getpass.getuser()
    user = User.username

    name = models.CharField(max_length=200)
    age = models.DecimalField(max_digits=3, decimal_places=0)
    hobby = models.CharField(max_length=300)
    city = models.ForeignKey(City, on_delete=models.CASCADE)
    description = models.CharField(max_length=200, null=True, blank=True)
    added_date = models.DateTimeField('added date', default=datetime.now())
    computer = models.CharField(max_length=30, default=hostname)
    computer_user = models.CharField(max_length=10, default=login_username)
    logged_user = models.CharField(max_length=100, default='user')           #<<== place for login user

    def __str__(self):
        return self.name

my views.py file:

from django.shortcuts import render, redirect
from .models import Workers
from .forms import WorkersForm

def all_records(request):
    records = Workers.objects.all().order_by('id').reverse()
    context = {
        'records': records
    }
    return render(request, 'all.html', context)

def new_record(request):
    form = WorkersForm(request.POST or None, request.FILES or None)
    if form.is_valid():
        form.save()
        return redirect(all_records)
    context = {
        'form': form
    }
    return render(request, 'form.html', context)

my forms.py file :

from django.forms import ModelForm
from .models import Workers

class WorkersForm(ModelForm):
    class Meta:
        model = Workers
        fields = ['name', 'age', 'hobby', 'city', 'description']

Большое спасибо за помощь и любые предложения

BR

...