由Peter DeGlopper解決:如何更改UpdateView中的M2M字段?
謝謝你的幫助,它解決了我的問題,我真的很感激它。我正把頭撞在桌子上。
我不必更改我的ModelForm。查看輸入標記中注意到的HTML源代碼checked =「checked」子網被輸出爲已選中,但未在瀏覽器中顯示。這是在CentOS的Firefox 24.2.0(在虛擬機上),所以我去了我的Windows 7主機,並加載了Firefox 26.0的工作,並且在IE8中也能正常工作。這很奇怪,但它解釋了你應該工作的混亂。
爲了節省字段感謝你我現在看到我是如何思考它。我能夠更新M2M領域。我更新了下面的TagUpdateView以顯示工作代碼。
我有2個問題,試圖使用的UpdateView與M2M領域...
- 當前「標記」子網不顯示在我的模板檢查
- 如何我是否可以通過覆蓋form_valid來處理更新我的TagUpdateView中的M2M關係?
任何見識將不勝感激。 謝謝。
標籤M2M models.py:
class Tag(models.Model):
tag = models.CharField(max_length=120)
group = models.ForeignKey(Group)
description = models.TextField(max_length=500)
subnet = models.ManyToManyField(Subnet, null=True, blank=True)
date_created = models.DateTimeField()
created_by = models.ForeignKey(User, related_name='tag_created_by')
date_modified = models.DateTimeField(auto_now=True)
modified_by = models.ForeignKey(User, related_name='tag_modified_by')
def __unicode__(self):
return self.tag
標籤的ModelForm:
class TagForm(forms.ModelForm):
subnet = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple(), required=True, queryset=Subnet.objects.all())
class Meta:
model = Tag
exclude = ('date_created', 'created_by', 'date_modified', 'modified_by')
標籤views.py:
class TagUpdateView(UpdateView):
template_name = 'tag_update.html'
model = Tag
form_class = TagForm
def form_valid(self, form):
update_tag = form.save(commit=False)
update_tag.modified_by = self.request.user
update_tag.save()
form.save_m2m()
return super(TagUpdateView, self).form_valid(form)
我的模板 「tag_update.html」:
{% extends 'base.html' %}
{% load widget_tweaks %}
{% block title %}Tag {{ object.tag }} Update{% endblock %}
{% block content %}
<h1>Tag {{ object.tag }} Update</h1>
<br />
<form action="" method="post" role="form">{% csrf_token %}
<div class="row">
<div class="col-sm-4">
<div class="form-group">
<label for="id_tag">Tag Name</label>
{% render_field form.tag placeholder=form.tag.label class="form-control" %}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-2">
<div class="form-group">
<label for="id_group">Group</label>
{% render_field form.group placeholder=form.group.label class="form-control"%}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label for="id_description">Description</label>
{% render_field form.description placeholder=form.description.label class="form-control" rows="5" %}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label for="id_checkbox">Link to Subnets</label>
{{ form.subnet }}
</div>
</div>
</div>
<br />
<button type="submit" class="btn btn-primary">Submit</button>
</form>
<br />
{% endblock %}