Django表单-动态更改查询集
我有一个简单的模型:Django表单-动态更改查询集,django,django-forms,Django,Django Forms,我有一个简单的模型: class ModelA(models.Model): type = models.ForeignKey(Type) amount = models.DecimalField() product = models.ForeignKey(Product) 我已经为它创建了视图和模型表单 class ModelAForm(ModelForm): class Meta: model = ModelA fields
class ModelA(models.Model):
type = models.ForeignKey(Type)
amount = models.DecimalField()
product = models.ForeignKey(Product)
我已经为它创建了视图和模型表单
class ModelAForm(ModelForm):
class Meta:
model = ModelA
fields = [
'type', 'amount', 'product'
]
我怎样才能做到这一点:
当表单中的用户选择“类型”-类型1时,则在“产品”中,他拥有所有产品。现在它可以工作了
但当用户选择TYPE2时,我只想在少数产品中向他展示(例如,一年前的产品)我会用js来实现这一点。一旦选择了第一个下拉列表,根据所选的值,我将启动一个ajax调用,从后端仅获取与所选值相关的内容,并更新产品的下拉列表
Ajax适合这种情况,因为它不会阻止浏览器中的其他操作,而是异步运行 我会用js做这件事。一旦选择了第一个下拉列表,根据所选的值,我将启动一个ajax调用,从后端仅获取与所选值相关的内容,并更新产品的下拉列表 Ajax适合这种情况,因为它不会阻止浏览器中的其他操作,而是异步运行
from django.utils.translations import ugettext_lazy as _
class ModelAForm(ModelForm):
# Your code here
def clean(self):
cleaned_data = super(ModelAForm, self).clean()
product_type = cleaned_data.get("type")
product = cleaned_data.get("product")
if product.type != product_type:
msg = _("Wrong product type.")
self.add_error('product', msg)
from django.utils.translations import ugettext_lazy as _
class ModelAForm(ModelForm):
# Your code here
def clean(self):
cleaned_data = super(ModelAForm, self).clean()
product_type = cleaned_data.get("type")
product = cleaned_data.get("product")
if product.type != product_type:
msg = _("Wrong product type.")
self.add_error('product', msg)
我想是的。但是如何将这个ajax调用与ModelForm连接起来。Ajax响应应包含纯“选择html”,但其值中是否包含产品id?会没事的?是的,很好。或者有更好的方法:通过ajax直接在前端过滤掉产品,只显示相关的产品。不需要对后端进行ajax调用,因为您在Template中有上下文中的所有产品。但是如何将这个ajax调用与ModelForm连接起来。Ajax响应应包含纯“选择html”,但其值中是否包含产品id?会没事的?是的,很好。或者有更好的方法:通过ajax直接在前端过滤掉产品,只显示相关的产品。不需要对后端进行ajax调用,因为您在模板中有上下文中的所有产品