我有一个编辑我的模型实例的窗体。我希望使用表单将所有值隐藏起来,并且初始值为username
默认为登录用户,以便它变成subscribe
表单。问题是,正常initial={'field':value}
似乎不适用于许多领域。我该如何去做呢?Django初始化ManyToMany字段
我views.py
@login_required
def event_view(request,eventID):
user = UserProfile.objects.get(pk=request.session['_auth_user_id'])
event = events.objects.get(eventID = eventID)
if request.method == 'POST':
form = eventsSusbcribeForm(request.POST,instance=event)
if form.is_valid():
form.save()
return HttpResponseRedirect('/events/')
else:
form = eventsSusbcribeForm(instance=event)
return render_to_response('event_view.html', {'user':user,'event':event, 'form':form},context_instance = RequestContext(request))
我forms.py
class eventsSusbcribeForm(forms.ModelForm):
eventposter = forms.ModelChoiceField(queryset=UserProfile.objects.all(), widget=forms.HiddenInput())
details = forms.CharField(widget=forms.Textarea(attrs={'cols':'50', 'rows':'5'}),label='Enter Event Description here')
date = forms.DateField(widget=SelectDateWidget())
class Meta:
model = events
exclude = ('deleted')
def __init__(self, *args, **kwargs):
super(eventsSusbcribeForm, self).__init__(*args, **kwargs)
self.fields['username'].initial = (user.id for user in UserProfile.objects.filter())
我的models.py
class events(models.Model):
eventName = models.CharField(max_length=100)
eventID = models.AutoField(primary_key=True)
details = models.TextField()
attendanceFee = models.FloatField(max_length=99)
date = models.DateField()
username = models.ManyToManyField(UserProfile, related_name='user', blank=True)
eventposter = models.ForeignKey(UserProfile, related_name='event_poster')
deleted = models.BooleanField()
def __unicode__(self):
return u'%s' % (self.eventName)
我是一个新手,蟒蛇,所以我可能不熟悉的机智,你已经指出标准的约定。将会把它放到我的下一个项目中,因为我几乎要完成这个项目。我正在使用UserProfile,因为我将用户分类并扩展了其功能。 感谢您提供'reverse'方法的提示。 我必须改变我的事件模型,以便我可以使用'through'。我已经完成了我的ERD和DFD,所以Iam试图避免对我的模型进行更改。 – 2010-04-04 10:29:19
有关用户配置文件,请参见http://www.b-list.org/weblog/2006/jun/06/django-tips-extending-user-model/。你不应该子类User。 是的,你必须做模式迁移来使用一个通过,因为必须已经有一个events_users链接表。 请原谅我,如果我错了,但这些只是图表正确吗?如果您仍在开发中,重置数据库有什么问题? – 2010-04-04 16:06:40