Как автоматически заселить промежуточную модель на формы Джанго? - PullRequest
0 голосов
/ 07 декабря 2018

Я новичок и, возможно, на этот вопрос есть известный ответ, но я не могу его получить.У меня 3 модели: SO (Операционная система), ПК и SO_PC.Пользователь может создавать экземпляры SO и ПК.Я пытаюсь, что когда вы создаете ПК, промежуточный 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>
...