我有一個編輯我的模型實例的窗體。我希望使用表單將所有值隱藏起來,並且初始值爲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