0
我是Django的新手,需要一些關於我得到的視圖錯誤的幫助。django ModelForm保存與ManyToManyField的問題
我寫了一個視圖,如果請求方法是GET,將顯示「Groups」的數據表;如果請求方法是POST,則顯示錶單以編輯特定的「Group」數據)。
而且,如果POST在現有的項目,我想形式來預先填入我已經在表中該項目的數據。我已經差不多了了這一切,除了當我轉到保存編輯後的形式,我不斷收到此錯誤:
「無法在ManyToManyField指定的中介模式設定值」
任何幫助將是不勝感激。另外,我對所有這些網絡開發工具都很陌生,所以如果我正在做一些完全愚蠢的事情,或者錯過了一個概念,請隨時根據我的想法對我進行處理。 ;-)
型號
class Alias(models.Model):
def __unicode__(self):
return unicode(self.alias)
alias = models.CharField(max_length=32)
class Octet(models.Model):
def __unicode__(self):
return unicode(self.num)
num = models.IntegerField(max_length=3)
class Group(models.Model):
def __unicode__(self):
return unicode(self.name)
name = models.CharField(max_length=32) #name of the group
id = models.AutoField(primary_key=True) #primary key
octets = models.ManyToManyField(Octet, through='OctetAssignment', blank=True) #not required
aliases = models.ManyToManyField(Alias, through='AliasAssignment', blank=True) #not required
class OctetAssignment(models.Model):
octet = models.ForeignKey(Octet) #octet
group = models.ForeignKey(Group) #group that octet is assigned to
class AliasAssignment(models.Model):
alias = models.ForeignKey(Alias)
group = models.ForeignKey(Group)
查看
def index(request):
if request.method == 'GET':
groups = Group.objects.all().order_by('name')
return render_to_response('groups.html',
{ 'groups': groups, },
context_instance = RequestContext(request),
)
elif request.method == "POST":
g = Group.objects.get(id=request.POST['id'])
form = GroupEditForm(instance=g)
return render_to_response('groups.html',
{ 'form': form, },
context_instance = RequestContext(request),
)
def save(request):
if request.method == "POST":
form = GroupEditForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/tradedesk/groups/') # Redirect after POST
爲了使其完整,這裏是我使用的渲染表和編輯頁面的表單模板代碼。 模板
<h1>Group Information</h1>
{% if groups %}
<table border=1>
{% for group in groups %}
<tr>
<td>{{group.name}}</td>
<td>{% for octet in group.octets.all %} {{octet}} {% endfor %}</td>
<td>{% for alias in group.aliases.all %} {{alias}} {% endfor %}</td>
<td>{{group.analyst}}</td>
</tr>
{% endfor %}
</table>
<br></br>
<form method="post" action="/groups/">{% csrf_token %}
<select name="id" >
{% for group in groups %}
<option value="{{group.id}}">{{group.name}}</option>
{% endfor %}
</select>
<input type="submit" value="Edit">
</form>
{% endif %}
{% if form %}
<form method="post" action="/groups/save/">{% csrf_token %}
{{form}}
<br></br>
<input type="submit" value="Save">
<form>
{% endif %}
</div>
沒有骰子,沒有工作。它實際上破壞了我的數據表在GET視圖。 – nnachefski 2010-12-10 13:19:48