我的文章,數據庫與如何在django admin中創建對象時自動插入當前用戶?
submitter = models.ForeignKey(User, editable=False)
凡User
導入如下:
from django.contrib.auth.models import User.
我想自動插入當前活動的用戶在提交場當一個特定的用戶提交文章。
任何人有任何建議嗎?
我的文章,數據庫與如何在django admin中創建對象時自動插入當前用戶?
submitter = models.ForeignKey(User, editable=False)
凡User
導入如下:
from django.contrib.auth.models import User.
我想自動插入當前活動的用戶在提交場當一個特定的用戶提交文章。
任何人有任何建議嗎?
萬一有人正在尋找一個答案,這裏是我在這裏找到了解決辦法: http://demongin.org/blog/806/
總結: 他的雜文表如下:
from django.contrib.auth.models import User
class Essay(models.Model):
title = models.CharField(max_length=666)
body = models.TextField()
author = models.ForeignKey(User, null=True, blank=True)
哪裏多用戶可以創建散文,所以他創建了admin.ModelAdmin類如下:
from myapplication.essay.models import Essay
from django.contrib import admin
class EssayAdmin(admin.ModelAdmin):
list_display = ('title', 'author')
fieldsets = [
(None, { 'fields': [('title','body')] }),
]
def save_model(self, request, obj, form, change):
if getattr(obj, 'author', None) is None:
obj.author = request.user
obj.save()
按http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.prepopulated_fields你不能用prepopulated_field管理指令中使用ForeignKey的,唉
但this thread可以幫助你。在我的回答中,我還鏈接到Pro Django的Google掃描版本,它有很好的解決方案。理想情況下,如果你可以購買這本書,那肯定會更好,但Google似乎仍然有大部分相關章節。
我無法真正看到相關頁面... – FurtiveFelon 2010-06-07 18:40:30
如果你不想要保持外鍵在您模型的用戶,然後在admin.py
覆蓋Save方法
obj.author = request.user.username
obj.save()
這將存儲是誰在你的數據庫登錄的用戶名。
假設用戶B保存了由用戶A創建的記錄。通過使用上述方法,記錄將與用戶B一起保存。在某些情況下,這可能不是最佳選擇,因爲保存該記錄的每個用戶都將「偷」它。有一個變通方法這一點,這將節省用戶只有一次(誰創造它的人):
from . models import *
class CarAdmin(admin.ModelAdmin):
list_display = ('car_name','created_by')
actions = None
def save_model(self, request, obj, form, change):
if not obj.created_by:
obj.created_by = request.user
obj.save()
你的意思是在使用
models.py
admin.py管理員或前端? – 2010-06-07 17:25:19
我想在django管理網站中使用 – FurtiveFelon 2010-06-07 19:47:34