フォームを使用して既存のオブジェクトを編集しようとしていますが、すべてに現在の値が入力されているわけではありません。このオブジェクトには値がありましたが、編集しようとすると、すべてのフィールドに何も表示されず、空白のフィールドのみが表示されました。
モデルは次のとおりです。
class Flow (models.Model):
title = models.CharField("Title", max_length=200)
slug = models.SlugField(unique=True)
description = models.TextField("Description")
url = models.URLField("URL")
tags = TaggableManager()
flow_date = models.DateTimeField(auto_now_add=True, blank=True, null=True)
author = models.ForeignKey('auth.User', null=True)
def __unicode__(self):
return self.title
@permalink
def get_absolute_url(self):
return ('flow.views.details', (), {'slug':self.slug})
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.title)
return super(Flow, self).save(*args, **kwargs)
class Meta:
verbose_name = 'Flow'
これがビューです
class FlowForm(forms.ModelForm):
class Meta:
model = Flow
exclude = ['flow_date', 'slug']
@login_required
def edit(request, flow_id = None):
flow = None
if flow_id is not None:
flow = get_object_or_404(Flow, pk=flow_id)
if request.method == 'POST':
form = FlowForm(request.POST, instance=flow)
if form.is_valid():
tags = form.cleaned_data['tags']
newflow = form.save(commit=False)
newflow.save()
for tags in tags:
newflow.tags.add(tags)
return HttpResponseRedirect(newflow.get_absolute_url())
else:
form = FlowForm(request.POST, instance=flow)
return render_to_response('flow/flow_edit.html', {'form':form, 'flow':flow,}, context_instance=RequestContext(request))
前もって感謝します。
アップデート
ダニエルありがとう。
次に、django-taggitオブジェクトを含むオブジェクトを削除します。次の定義で動作しますが、タグはdjango-taggit-templatetagsに基づいてタグクラウドリストに表示されます。
@login_required
def delete(request, flow_id):
flow = Flow.objects.get(pk=flow_id)
flow.delete()
return render_to_response('flow/flow_delete.html', {'flow':flow,}, context_instance=RequestContext(request))
選択したdjango-taggitのオブジェクト/カウントをフォーム/データベースから削除するにはどうすればよいですか?