Я новичок в Django и нуждаюсь в некоторой помощи при ошибке просмотра, которую я получаю.
Я написал представление, которое будет отображать таблицу данных «Группы», если метод запроса - GET, или отображать форму для редактирования определенной «Группы», если метод запроса - POST (элемент для редактирования передается.с данными POST).
Также, если 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>