2011-02-27 91 views
1

我正在開發一個小型的Django站點,我正在使用django.contrib.admin來處理內容管理。我想在第一次保存時捕獲文章的作者(管理員用戶)的姓氏&(如果其他用戶編輯文章,則不更新)。通過外鍵引用Django contrib.admin用戶?

即。

class Article(models.Model) 
    title = models.CharField(max_length=50) 
    pub_date = models.DateTimeField('date published') 
    author = ForeignKey(???) 
    ... 

什麼我需要寫創建一個新的對象條時,抓住這個用戶的名字&姓字段?如果這些字段爲空,我會默認使用其管理員用戶名。

+1

這是可能的重複。文件:http://docs.djangoproject.com/en/dev/topics/auth/ – 2011-02-27 15:08:55

回答

4

讓你的模型中使用的用戶對象:

author = models.ForeignKey(User) 

爲了防止這一領域被上更新多變,看看這個其他SO職位:
Django admin: exclude field on change form only

要更改管理員的選擇字段以使用名/姓,可以嘗試以下代碼片段:
http://djangosnippets.org/snippets/1642/

要更改管理員的說法,假設你使用內置的模板,你可以爲這個帖子上描述的添加自定義列:How do I add a custom column with a hyperlink in the django admin interface?

class AuthorAdmin(admin.ModelAdmin): 
list_display = ('author_name',) 

def my_author_name(self, obj): 
    if obj.author.first_name and obj.author.last_name: 
     return '%s %s' % (obj.author.first_name, obj.author.last_name) 
    else: 
     return obj.author.username 
my_author_name.allow_tags = True 
my_author_name.short_description = 'Author' 
1

我認爲你正在尋找這樣的:

author = models.ForeignKey(User) 
0

它看起來像最好的辦法處理無或空白結果從get_full_name是剛剛填充User.author與models.ForeignKey(用戶),然後 - 在模板級別 - 使用下面的:

{{ user.get_full_name|default:user.username }} 

...通過this SO answer。這允許我在用戶的文章上執行查詢,但如果用戶還沒有輸入它們,仍然可以優雅地處理空白姓氏字段的姓氏字段,但是當他們有時還會動態更新)。