2017-04-09 21 views
0

我在我的應用程序中有反饋表單。用戶必須登錄才能提交反饋。用戶被要求在文本區域輸入反饋。提交後,我想將用戶詳細信息存儲在submit_by字段中,並將創建表單的時間存儲爲submitted_date(其中也包含時間)。如何在Django的反饋表單中包含submitted_date和submitted_by?

我已閱讀了許多有關使用auto-now_add=Trueauto_now的討論,但對此主題有許多意見,也有點混淆。

我正在使用模型表單從用戶輸入數據。這是我的不同的文件看起來像:

# myapp/models.py 

class Feedback(models.Model): 
    content = models.TextField(max_length=100) 
    submitted_by = models.ForeignKey(User) 
    submitted_date = models.DateTimeField() # what do add here in arguments ? 

    def __str__(self): 
     return self.content + " @ " + self.submitted_date 

# myapp/forms.py 

class FeedbackForm(ModelForm): 
    class Meta: 
     model = Feedback 
     fields = [ 'content' ] 

# myapp/views.py 
def addfeeback(request): 
    if request.method == "POST": 
     form = FeedbackForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      # Do I need to do something here ? 
      return redirect('home') 
    else: 
     form = FeedbackForm() 
    return render(request, 'myapp/addFeedback.html', { 'form': form}) 

# myapp/urls.py 

url(r'^feedback/$', core_views.addfeeback , name='add-feedback'), 

# myapp/templates/addFeedback.html 

{% extends 'registration/base.html' %} 

{% block title %} Feedback {% endblock %} 

{% block content %} 
    <form method="post" > 
    {% csrf_token %} 
    {{ form.as_p }} 
    <input type="submit" value="Submit"> 
    </form> 
{% endblock %}  

這將不勝感激,如果你能提出相關的修改到我的代碼不能如願。謝謝。

回答

1

沒有什麼錯誤使用auto_now_add。但由於您必須設置提交者以及日期,因此您不會因此獲得太多收穫。

該模式雖然在保存表單時使用commit=False,然後修改手動保存之前返回的對象。

if form.is_valid(): 
    obj = form.save(commit=False) 
    obj.submitted_by = request.user 
    obj.submitted_date = datetime.datetime.now() 
    obj.save() 
    return redirect('home') 
+0

或'django.utils.timezone.now()',理想情況下;-) –

0

你可以做

if form.is_valid(): 
    obj = form.save(commit=False) 
    obj.submitted_by = request.user 
    obj.save() 

在模型

submitted_date = models.DateTimeField(auto_now_add=True)