2009-09-25 20 views

cevap

98

Kullanıcıyı nerede tanıyorsunuz? Kullanıcı, request.user olarak istekte bulunannumaralı belgede sağlanır. İçin

kullanıcı taşıma Eğer böyle bir şey yapabileceği bir modelin örneğinin yaratıcısı veya editörü kaydetmek istiyorsanız here

bkzşablonları:

model.py

class Article(models.Model): 
    created_by = models.ForeignKey(User, related_name='created_by') 
    created_on = models.DateTimeField(auto_now_add = True) 
    edited_by = models.ForeignKey(User, related_name='edited_by') 
    edited_on = models.DateTimeField(auto_now = True) 
    published = models.BooleanField(default=None) 
M3p

İnternette bu buldum ama Modelleri içine kullanıcı adı almak istiyorsanız, @ vikingosegundo cevabını genişletme artık

+4

Sadece bir not, save_formset -> set_user içinde, eğer olmasır, eğer olmastr (örnek, 'created_by') – FurtiveFelon

+0

mevcut kullanıcıyı settings.py içinde alabilir miyim? – Mahendra

+0

Bunu neden yaptın? (lütfen yeni bir soru oluşturun, django günlerim çoktan gitti) – vikingosegundo

5

, bir ara katman yazılımı ilan içerir bir yol bulmuş nerede bilmiyorum.

from threading import current_thread 

_requests = {} 

def get_username(): 
    t = current_thread() 
    if t not in _requests: 
     return None 
    return _requests[t] 

class RequestMiddleware(object): 
    def process_request(self, request): 
     _requests[current_thread()] = request 

düzenleyin settings.py ve MIDDLEWARE_CLASSES ekleyin: Bu içerik ile, uygulamanızın içinde get_username.py adlı bir dosya oluşturun

MIDDLEWARE_CLASSES = (
    ... 
    'yourapp.get_username.RequestMiddleware', 
) 

Şimdi, save() yöntemde, mevcut kullanıcı adı alabilirsiniz böyle:

from get_username import get_username 

... 

def save(self, *args, **kwargs): 
    req = get_username() 
    print "Your username is: %s" % (req.user) 
+0

Adanmış konu: http://stackoverflow.com/questions/10991460/django-get-current-user-in-model-save –

+0

@nKn gerçekten adanmış MiddleWare 'models' nesnesinde get_username()' i çağırmak için gerekli? Eğer öyleyse, bu konuda kanonik bir dokümanlar için bir bağlantı olması güzel olurdu. Aynı şeyi yapmak için 1.9.5'te yerel django işlevleri güncellendi mi? – alvas

3

Django 1.9.6 varsayılan projesahiptir Varsayılan şablonları

0 Yani bunun doğrudan gibi şeyler yazabilirsiniz:

{% if user.is_authenticated %} 
    {{ user.username }} 
{% else %} 
    Not logged in. 
{% endif %} 

Bu işlevsellik settings.py yılında django.contrib.auth.context_processors.auth bağlam işlemci tarafından sağlanmaktadır.

Adanmış şablon soru: önceki sorunun How to access the user profile in a Django template?

İlgili konular