Django много выбора - PullRequest
       35

Django много выбора

0 голосов
/ 19 февраля 2019

Я хотел бы реализовать поле выбора, где пользователь может выбрать соответствующие параметры и «перенести» их в «выбранный блок» перед сохранением.У Django есть это для интерфейса администратора, как в этом посте , но как реализовать это на обычном веб-сайте?Любые ссылки на соответствующие учебные пособия или примеры, основанные на следующем, будут приветствоваться.

Вот мои модели для управляемых таблиц отношения many2many.

# models.py
class Container(models.Model):
    container_id = models.AutoField(primary_key=True)
    location_id = models.ForeignKey(Location, db_column='location_id', on_delete = models.PROTECT)
    icon_desc = models.ForeignKey(Icon, db_column='icon_desc', null=True, blank=True, default='Box',on_delete = models.PROTECT)
    container_name = models.CharField(max_length=50, blank=True, null=True)

class Sample(models.Model):
    sample_id = models.AutoField(primary_key=True)
    containers = models.ManyToManyField(Container, through='JoinSampleContainer', through_fields=('sample_id', 'container_id'), related_name='sample')

class JoinSampleContainer(models.Model):
    id = models.AutoField(primary_key=True)
    sample_number = models.IntegerField()
    container_id = models.ForeignKey(Container, db_column='container_id', on_delete = models.PROTECT)
    sample_id = models.ForeignKey(Sample, db_column='sample_id', on_delete = models.PROTECT)

В моем Views.py у меня естьдля обычной настройки формы:

def assignsample(request):
    if request.method == "POST":
        form = AssignForm(request.POST)
        if form.is_valid():
            post = form.save(commit=False)
            post.save()
            return redirect('alldepotsamples')
    else:
        form = AssignForm()
    return render(request, 'depotsample/assignsample.html', {'form': form})

И форма:

class AssignForm(forms.ModelForm):
    class Meta:
        model = Sample
        fields = (
        'sample_id',
        'containers'
        )

Это представлено в html с использованием заполнителей:

{{ form.sample_id}}
{{ form.containers}}
...