Python Django的动态字段模型

Python Django的动态字段模型,python,django,forms,dynamic,Python,Django,Forms,Dynamic,我试图弄清楚如何根据前一个字段的输入动态更改ModelForm字段 例如,如果我有以下类型的模型: class Phone(models.Model): name = models.CharField(max_length=10) class Series(models.Model): name = models.CharField(max_length=10) class Manufacturer(models.Model): phone = models.F

我试图弄清楚如何根据前一个字段的输入动态更改ModelForm字段

例如,如果我有以下类型的模型:

class Phone(models.Model):
     name = models.CharField(max_length=10)

class Series(models.Model):
     name = models.CharField(max_length=10)

class Manufacturer(models.Model):
     phone = models.ForeignKey('Phone') 
     series = models.ForeignKey('Series')     

class ManufacturerForm(ModelForm):
     class Meta:
         model = Manufacturer
这将生成一个表单ManufacturerForm,其中包含数据库中电话和序列条目的下拉选项。例如,是否可以根据用户输入的手机设置不同的系列条目

根据我所读的内容,我已经阅读了关于使用_init _;方法来实现这一点的内容,但是我不确定在给定的场景中如何执行这一点。或者,也许有一个更好的方法来实现这一点,你已经采取?谢谢你的建议

编辑:添加表单的视图

def make_ad(request):
    if request.method == 'POST':
        form = ManufacturerForm(request.POST, request.FILES)
        if form.is_valid():
            a = form.save()
            a.user = request.user
            a.save()
    else:
        form = ManufacturerForm()

    variables = RequestContext(request, {
        'form': form
    })
    return render_to_response('place.html', variables)
@super9提到使用ajax请求更改这些元素。我需要检查request.is_是否是ajax,但在我看来应该在什么时候检查它呢?如何根据ajax请求添加或更改queryset

谢谢你的建议

编辑:尝试使用django智能选择

不知道如何设置我的模型来利用django smart Select来完成我正在尝试的工作。以下是我构建模型的方式:

from smart_selects.db_fields import ChainedForeignKey 

class Phone(models.Model):
    phone = models.CharField(max_length=10)

class Series(models.Model):
    series = models.CharField(max_length=10)
    phone = models.ForeignKey(Phone)

class SeriesModel(models.Model):
    model = models.CharField(max_length=10)
    series = models.ForeignKey(Series)

class Manufacturer(models.Model):
    phone = models.ForeignKey(Phone)
    series = ChainedForeignKey (Series, chained_field = "phone", chained_model_field = "phone")
    series_model = ChainedForeignKey (SeriesModel, chained_field = "series", chained_model_field = "series")
但是当我查看表单模型表单时,series\u模型的字段没有正确链接到series。在第二层抽象中,我是否缺少了一些让智能选择工作的东西


编辑:以上代码现在可以工作了

您需要打一个AJAX电话,根据手机中选择的内容更新系列选择。感谢您的回复@super9。对于使用request.is_ajax更改/添加查询集,您有什么建议吗?谢谢你的想法