저는 장고를 처음 사용하고 있으며보기 오류에 대한 도움이 필요했습니다.django ModelForm ManyToManyField 문제 저장
요청 방법이 GET 인 경우 "그룹"의 데이터 테이블을 표시하거나 요청 방법이 POST 인 경우 특정 "그룹"을 편집하기위한 양식을 표시하는보기를 작성했습니다 (편집 할 항목이 POST와 함께 전달됨). 데이터).
또한 기존 항목에 POST를 사용하면 양식에 이미 해당 항목의 표에있는 데이터가 미리 채워지게됩니다. 나는했습니다 거의 내가 고토는 편집 양식을 저장하는 경우를 제외하고, 모두를 얻었다에게, 내가이 오류가 계속 :
이"중간 모델을 지정하는 ManyToManyField에 값을 설정 할 수 없음"
어떤 도움이 될 것입니다 대단히 감사합니다. 또한, 나는이 모든 웹 dev에 물건에 새로운이야, 그래서 만약 내가 뭔가 바보 같은 짓을하거나 개념을 놓치고, 제발 저를 따라 불꽃을 자유롭게. ;-)
모델
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
오 기다려! 그게 작동 했어, 난 그냥 내 DB를 시드 스크립트와 관계를 추가 "wasnt". 도움을 많이 주셔서 감사합니다! – nnachefski