如何在Django表单上自动填充中间模型?

时间:2018-12-07 11:57:55

标签: python django-forms

我是一个初学者,可能这个问题有一个已知的答案,但我听不懂。我有3个模型:SO(操作系统),PC和SO_PC。用户可以创建SO和PC实例。我正在尝试创建PC时,中间PC_SO自动完成。我知道在视图上有一些工作要做,但是我不知道如何做。谢谢大家。

模型:

class SO(models.Model):
    name = models.CharField(max_length=30)
    description = models.CharField(max_length=300)

    def __str__(self):
        return self.name

class PC(models.Model):
    number = models.CharField(max_length=10)
    details = models.CharField(max_length=300)
    so = models.ManyToManyField(SO, through='PC_SO')

    def __str__(self):
        return self.number

class PC_SO(models.Model):
    pc = models.ForeignKey(PC, verbose_name=u'PC', on_delete=models.CASCADE)
    so = models.ForeignKey(SO, verbose_name=u'SO', on_delete=models.CASCADE)

表格:

class pcForm(forms.ModelForm):

   class Meta:
       model = PC
       fields = ('id','number', 'details', 'so')

我的实际观点:

def pcCreate(request):
    if request.method == "POST":
        form = pcForm(request.POST)

        if form.is_valid():

            pc = form.save(commit=False)
            pc.save()
            return redirect('views.pcsDetail', pk=pc.pk)
    else:
        form = pcForm()

    return render(request, 'crearPc.html', {'form': form})

模板:

<form method="POST" class="pc-form">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit" class="save btn btn-default">Save</button>
</form>

0 个答案:

没有答案
相关问题