2010-10-21 3 views
3

Как предварительно заполнить поле администратора из вошедшей в систему информации о пользователе?preopulate поле администратора от вошедшего в систему пользователя

У меня есть model.py:

from django.db import models 
class News(models.Model): 
    title = models.CharField(max_length=65) 
    body = models.TextField() 
    author = models.CharField(max_length=55) 

и я admin.py:

from django.contrib import admin 
from django.contrib.auth.models import User 
from newsite.news.models import News 
class NewsAdmin(admin.ModelAdmin): 
    list_display = ('title','author') 
    search_fields = ['title', 'author'] 
    prepopulated_fields = {'author': (?????)} 
admin.site.register(News, NewsAdmin) 

Я изо всех сил пытаются выяснить, как получить вошедшего в систему пользователя в том, что prepopulated_field для автора.

Любые советы будут оценены. Благодарю.

ответ

4

Мои models.py это:

author = models.ForeignKey(User) 

Admin.py это:

class BugAdmin(admin.ModelAdmin): 
    fields = ['name', 'slug', 'summary', 'categories', 'status', 'browser', 'frequency', 'really_bug'] 
    exclude = ('author','excerpt') 
    prepopulated_fields = { 'slug' : ['name'] } 
    form = BugForm 

    def save_form(self, request, form, change): 
     obj = super(BugAdmin, self).save_form(request, form, change) 
     if not change: 
      obj.author = request.user 
     return obj 
+0

Обратите внимание, что он/она тянет данные из объекта запроса. (obj.poster = request.user) Объект запроса, по совпадению, генерируется первым при каждом запросе. –

+0

Большое спасибо за подсказку. Еще один вопрос: – Kevin

+0

У вас есть форма = BugForm. Итак, вы отменили форму по умолчанию от администратора? У вас есть form.py, который вы могли бы использовать в качестве примера? Благодарю. – Kevin

Смежные вопросы