[FIXED] Abrufen des aktuellen Benutzernamens in utils.py django

Ausgabe

Ich bin neu bei Django und versuche, beim Laden der Seite ein Zahlenfolgefeld zu erstellen, die Kombination aus aktuellem Datum und aktuellem Benutzernamen + Anzahl (seine Beiträge in diesem Monat) + 1 . Um dies zu erreichen, verwende ich initial .

Formen.py:

  class PostForm(ModelForm): 
       post_no = forms.CharField(
        label='Post No',initial=getPostNo,
         widget=forms.TextInput(attrs={
            'class': 'form-control',
            'readonly': 'readonly',
            'placeholder':'Post No'

         })

in utils.py die Definition von getPostNo:

def getPostNo:
    from .models import Posts
    m = datetime.now().month
    y = datetime.now().year
    tme = datetime.now().strftime("%d%m%Y")
    cnt = Posts.objects.filter(employee_id=1,post_date__month=m,post_date__year=y).count()+1 #here i need to filter using the current user id logged in . i gave 1 for testing
    return tme+str(cnt)+str(current username) //here i need current username

Ich konnte die angemeldete Benutzer-ID nicht von forms.py an getPostNo übergeben, und ich kann auch nicht request.user in utils.py abrufen.

Bitte schlagen Sie den richtigen Weg vor, dies zu tun.

Lösung

Die Lösung ist einfach. Sie müssen nur die Initialisierungsfunktion getPostNo in der Ansicht selbst aufrufen.

post_form = PostForm(initial={'post_no':getPostNo(request.user)})

getPostNr:

def getPostNo(user):
    from .models import Posts
    m = datetime.now().month
    y = datetime.now().year
    tme = datetime.now().strftime("%d%m%Y")
    cnt = Posts.objects.filter(employee_id=user.pk,post_date__month=m,post_date__year=y).count()+1 
    
    return tme+str(cnt)+str(user.username) 


Beantwortet von –
dej


Antwort geprüft von –
Cary Denson (FixError Admin)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like