2
我使用modelformset_factory创建一个空的表单,但我不知道如何在视图中使用request.user填充created_by字段。我知道可以使用models.Manager来处理created_by的默认值,但我更愿意用当前登录的用户直接在视图中填充它。我不在乎管理界面。django - 使用modelformset_factory填充created_by字段与request.user中查看
这是我的models.py:
from django.db import models
from django.forms import ModelForm
from django.contrib.auth.models import User
import datetime
class ezApp(models.Model):
name = models.SlugField(max_length=50,)
date_created = models.DateTimeField('date created', editable=False)
date_updated = models.DateTimeField('date updated', editable=False)
created_by = models.ForeignKey(User)
def save(self):
if not self.id:
self.date_created = datetime.date.today()
self.date_updated = datetime.datetime.today()
super(ezApp, self).save()
class ezForm(ModelForm):
class Meta:
model = ezApp
fields = ('name')
这个views.py
from django.shortcuts import render_to_response
from ezmapping.models import *
from django.forms.models import modelformset_factory
def setName(request):
ezAppFormSet = modelformset_factory(ezApp, extra=1, fields=('name'))
formset = ezAppFormSet(queryset=ezApp.objects.none())
if request.method == 'POST':
formset = ezAppFormSet(request.POST, request.FILES)
if formset.is_valid():
formset.save()
return render_to_response("project/manage_new.html", {'formset': formset, 'title': "New"}, context_instance=RequestContext(request))
错误消息:
project_ezapp.created_by_id不能为null
谢谢你的回答,但我收到你的错误代码:save_new()得到了一个意外的关键字参数'commit' –
@ Burton449我修复了错误答案,你可以再试一次吗? – sneawo
非常感谢,它的工作。 –