0

フォームを使用して既存のオブジェクトを編集しようとしていますが、すべてに現在の値が入力されているわけではありません。このオブジェクトには値がありましたが、編集しようとすると、すべてのフィールドに何も表示されず、空白のフィールドのみが表示されました。

モデルは次のとおりです。

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のオブジェクト/カウントをフォーム/データベースから削除するにはどうすればよいですか?

4

1 に答える 1

0

request.POSTリクエストがPOSTではないため、空のディクショナリである場合は、else句のフォームインスタンス化にデータ引数として渡します。空であっても、インスタンス値はデフォルトとしてのみ使用され、データとして渡された場合は表示されないため、インスタンスのすべてのフィールドが上書きされます。その行を次のように変更します。

form = FlowForm(instance=flow)
于 2013-01-28T10:55:26.820 に答える