我想实现一个选择框,用户可以在其中选择适当的选项并在保存之前将它们“转移”到“选定框”。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}}