0
我試圖設置一個表格,從2個模型中的字段中繪製。將另一個模型添加到表單中?
我厭倦了像下面一樣添加模型,但不斷收到錯誤。
model = Server, Tag
後端管理拿起2款之間的關係,我可以從後端但是通過我無法兩者結合在一起的形式更新。
views.py
from django.shortcuts import render, redirect, get_object_or_404
from django.forms import ModelForm
from servers.models import Server
from servers.models import Tag
class ServerForm(ModelForm):
class Meta:
model = Server, Tag
fields = ['name', 'order', 'first_name']
def server_list(request, template_name='servers/server_list.html'):
servers = Server.objects.all()
data = {}
data['object_list'] = servers
return render(request, template_name, data)
def server_create(request, template_name='servers/server_form.html'):
form = ServerForm(request.POST or None)
if form.is_valid():
form.save()
return redirect('server_list')
return render(request, template_name, {'form':form})
def server_update(request, pk, template_name='servers/server_form.html'):
server = get_object_or_404(Server, pk=pk)
form = ServerForm(request.POST or None, instance=server)
if form.is_valid():
form.save()
return redirect('server_list')
return render(request, template_name, {'form':form})
def server_delete(request, pk, template_name='servers/server_confirm_delete.html'):
server = get_object_or_404(Server, pk=pk)
if request.method=='POST':
server.delete()
return redirect('server_list')
return render(request, template_name, {'object':server})
models.py
from django.db import models
from django.core.urlresolvers import reverse
class Tag(models.Model):
slug = models.SlugField(max_length=200, unique=True)
def __str__(self):
return self.slug
class Server(models.Model):
name = models.CharField(max_length=200)
order = models.IntegerField()
first_name = models.CharField(max_length=250, blank=True, null=True)
tags = models.ManyToManyField(Tag)
def __unicode__(self):
return self.name
def get_absolute_url(self):
return reverse('server_edit', kwargs={'pk': self.pk})
server_form.py
<form method="post">{% csrf_token %}
<!-- {{ form.as_p }} this brings in the whole form-->
Name <br>
{{ form.name }} <br>
Order <br>
{{ form.order }} <br>
First name <br>
tag <br>
{{ form.tag }} <br> <!--trying to get tag to work through this form-->
{{ form.first_name }} <br><br>
<input type="submit" value="Submit" />
</form>
<table cellpadding="0" cellspacing="0">
我試圖讓{{form.tag}}部分工作和認識關係的形式。
任何幫助將不勝感激。
謝謝。
感謝您的信息。我看到InlineModelFormSet如何處理與外鍵的關係。但無法設法使其與我的模型和視圖正常工作。可能必須從頭開始並從那裏開始構建。 – Jimmyn
在處理標籤時,我認爲最好的選擇是使用CharField,在其中輸入一些彗星分隔的標籤,通過jquery tagit和自動完成(例如)管理UI,並在您的表單中使用clean_tags方法處理結果,這些方法返回一個標籤列表,方法是將它們通過彗形圖進行拆分,然後在save()方法中處理保存邏輯。如果它聽起來不錯,更新你最初的問題,以便我可以更新我的答案。 – Pcriulan