簡體   English   中英

我如何在 Django 中自動填充字段?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM