如何将django智能选择与modelform一起使用?
我用的是智能选择 编辑:这是我在模板中添加{{form.media.js}}后的代码,感谢@Evangelos models.py:如何将django智能选择与modelform一起使用?,django,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=2
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)
form.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})
模板:键入_modele_new.html
{% load staticfiles %}
<form method="POST">
{% csrf_token %}
**{{ form.media.js }}**
{{ form.as_p}}
<input type="submit" value="Submit">
</form>
{%load staticfiles%}
{%csrf_令牌%}
**{{form.media.js}**
{{form.as_p}}
url.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'),
]
从django.conf.url导入url,包括
从…起导入视图
从智能\u选择导入URL,如同智能\u选择\u URL一样
URL模式=[
url(r“^chaining/”,包括('smart\u selects.url'),
url(r“^type\u modele/new/$”,views.type\u modele\u new,name='modele\u new'),
url(r“^type\u modele/(?P[0-9]+)/$”,views.type\u modele\u detail,name='modele\u detail'),
]
编辑:问题是:
我有它在管理工作良好:
首先,你的观点在哪里 试着用文件发布更完整的问题,以便更好地理解 您在forms.py中引用的models.py中的模型装置在哪里 您的字段应该在列表[]中 您的forms.py应该如下所示:
from django import forms
from .models import Modele
class AppareilForm(forms.ModelForm):
class Meta:
model = Modele
fields =['tangente', 'modele']
您不需要编写javascript
只需记住在url.py中包含url(r“^chaining/”,include('smart_selects.url')
在您的视图中,请调用AppareilForm在视图中阅读有关表单的详细信息
在模板中,只需在加载javascript之前使用{form.as_p}和{{form.media.js}即可,并确保在模板中加载static。{%load static%}
您的模板应该如下所示
{% load static % }
<form action="your url that points to your view" method="POST">
{% csrf_token %}
{{ form.media.js }}
{{ form.as_p}}
<input type="submit" value="Submit">
</form>
{%load static%}
{%csrf_令牌%}
{{form.media.js}
{{form.as_p}}
仔细阅读django selects描述。谢谢Evangelos。我已经将{form.media.js}添加到模板中,现在代码对我有效。我用有效代码编辑了我的帖子。(顺便说一下,Appareil Modele在我的帖子中是个错误,与此无关)