我正在使用智能选择。如何在模型中使用django智能选择?
编辑:这是对我的作品,在模板中添加{{form.media.js}}之后的代码,这要归功于@Evangelos
models.py:
from django.db import models
from smart_selects.db_fields import ChainedForeignKey, ChainedManyToManyField
class ChoixTangente(models.Model):
name = models.CharField(max_length=255)
def __str__(self):
return self.name
class ChoixModele(models.Model):
name = models.CharField(max_length=255)
tangentes = models.ManyToManyField('Choixtangente', blank=True)
def __str__(self):
return self.name
class TypeModele(models.Model):
tangente = models.ForeignKey(ChoixTangente, blank=True, null=True)
type_modele = ChainedForeignKey(
ChoixModele,
chained_field="tangente",
chained_model_field="tangentes",
show_all=False,
auto_choose=True,
blank=True, null=True
)
def __unicode__(self):
return str(self.pk)
形式的.py:
from django import forms
from .models import ChoixTangente, ChoixModele, TypeModele
class TypeModeleForm(forms.ModelForm):
class Meta:
model = TypeModele
fields = ('tangente', 'type_modele')
views.py
from .models import ChoixTangente, ChoixModele, TypeModele
from .forms import TypeModeleForm
def type_modele_new(request):
if request.method == "POST":
form = TypeModeleForm(request.POST)
if form.is_valid():
modele_instance = form.save()
return redirect('calculs.views.type_modele_detail', pk=modele_instance.pk)
else:
form = TypeModeleForm()
return render(request, 'calculs/type_modele_new.html', {'form': form})
def type_modele_detail(request, pk):
modele_instance = get_object_or_404(TypeModele, pk=pk)
return render(request, 'calculs/type_modele_detail.html', {'modele_instance': modele_instance})
模板:type_modele_new.html
{% load staticfiles %}
<form method="POST">
{% csrf_token %}
**{{ form.media.js }}**
{{ form.as_p}}
<input type="submit" value="Submit">
</form>
urls.py
from django.conf.urls import url, include
from . import views
from smart_selects import urls as smart_selects_urls
urlpatterns = [
url(r'^chaining/', include('smart_selects.urls')),
url(r'^type_modele/new/$', views.type_modele_new, name='modele_new'),
url(r'^type_modele/(?P<pk>[0-9]+)/$', views.type_modele_detail, name='modele_detail'),
]
编辑:这里是问题:
我有它在管理工作的罚款:
- 我创建了ChoixTangente实例
- 创建ChoixModele 实例并在列表中选择ChoixTangentes实例
- 我可以通过在ChoixTangente列表中选择“tangente”并在对应的ChoixModele选项列表中选择“type_modele”来创建TypeModele实例,这些选择来自步骤1)和2)
我哗哗有我的用户通过表单这样做。但我无法工作。
字段“Tangente”填充了ChoixTangente列表,但是当我选择一个值时,字段“type_modele”保持为空而不是显示相应选项的列表。
see form screenshot for the users
谢谢你Evangelos。我已将{{form.media.js}}添加到模板,现在代码正在为我工作。我用工作代码编辑了我的帖子。 (顺便说一下,Appareil Modele在我的文章中是一个错误,在那里没有任何关系) –