Django表单想要自动保存用户,客户端和日期时间

She*_*009 5 python forms django autosave

我需要一些帮助.

在我的models.py中,我有一个Note表.我想要对此表做的是创建一个表单,用户可以在文本字段中为特定客户端输入一些注释.

models.py

class Note(models.Model):
    client = models.ForeignKey(Client)
    datetime = models.DateTimeField(default=datetime.now)
    user  = models.ForeignKey(User)
    note = models.TextField()

    def __unicode__(self):
        return unicode(self.user)
Run Code Online (Sandbox Code Playgroud)

现在,当用户输入注释时,他们应该看到注释文本字段.表单提交后,表单应自动将日期+时间保存到时间和日期.我好像在用户字段.提交表单后,经过身份验证的用户应自动保存.我不确定你怎么能这样做.我也想自动保存客户端,以便您可以访问客户端页面(r'^clients/(?P<client_id>\d+)/$', views.get_client),从该客户端自动保存.

这是我在forms.py中写的内容

forms.py

class NoteForm(forms.ModelForm):
    class Meta:
        model = models.Note
        exclude = ('client','user','datetime')
Run Code Online (Sandbox Code Playgroud)

在这里我的观点也是如此.

Views.py

def add_notes(request, client_id):
    client = models.Client.objects.get(pk = client_id)
    notes = client.note_set.all()
    if request.method == 'POST':
        form = forms.NoteForm(request.POST)
        if form.is_valid():
            form.save(True)
            request.user.message_set.create(message = "Note is successfully added.")
            return HttpResponse("<script language=\"javascript\" type=\"text/javascript\">window.opener.location = window.opener.location; window.close();</script>")
    else:
        form = forms.NoteForm()
    return render_to_response('note_form.html', {'form':form, 'client':client,'notes':notes}, context_instance = RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

DrT*_*rsa 7

class NoteForm(forms.ModelForm):
    class Meta:
        model = models.Note
        exclude = ('client','user','datetime')

    def __init__(self, client, user, *args, **kwargs):
        self.client = client
        self.user = user
        super(NoteForm, self).__init__(*args, **kwargs)

    def save(self):
        note = super(NoteForm, self).save(commit=False)
        note.user = self.user
        note.client = self.client
        note.save()
        return note
Run Code Online (Sandbox Code Playgroud)

在视图中:

form = forms.NoteForm(client, request.user, request.POST)
Run Code Online (Sandbox Code Playgroud)


Dan*_*man 7

    if form.is_valid():
        note = form.save(commit=False)
        note.user = request.user
        note.client = client
        note.save()
Run Code Online (Sandbox Code Playgroud)