![](/img/trans.png)
[英]Django model predefined method override - how to do some math and auto-populate a third field?
[英]How do i auto-populate fields in django?
我有一個名為userid字段的模型 Question ,在提出問題之前,需要登錄,我想在保存時捕獲當前登錄用戶的用戶 ID 並將其分配給 Question 模型的用戶 ID。
請注意我沒有在我的表單上顯示用戶 ID,即在問題模型中我已經聲明了用戶 ID,如下所示;
class Question(models.Model): ... userid=models.ForeignKey(User, editable=false) ...
如何將登錄用戶 ID 分配給 Question 模型userid ?
您的代碼可能如下所示:
from django.contrib.auth.decorators import login_required
class QuestionForm(forms.ModelForm):
class Meta:
model = Question
@login_required
def ask(request):
form = QuestionForm(request.POST)
if form.is_valid():
question = form.save(False)
question.userid = request.user
question.save()
#...
這篇博客條目(由 James Bennett 撰寫)也可能對您有用……它提供了一種幾乎完全符合您要求的方法。
對於更新的 - 並且可能會更新 - 資源,我推薦官方 Django 文檔。 這個例子已經進入ModelAdmin
文檔的 ModelAdmin 方法部分。
如果你像我一樣,你會很想抓住那個例子並運行,但你可能會從放慢速度、花幾分鍾閱讀,然后實施中受益——我當然會......
要記住的一件事是,如果不繞過 django 的設計限制,您就無法從模型訪問請求對象(以及當前用戶)。
因此,諸如自動填充 created_by 和 updated_by 之類的巧妙技巧在 Django 中不起作用。 您必須在視圖中手動設置這些字段,如@Daevaorn 所示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.