最近添加的Django外键值在表单中不被认为是有效的

时间:2014-12-28 20:03:03

标签: python django django-forms

我正在编写django应用程序,其中我有一个表单,允许添加新的外键值,以自动完成灯提供的多选字段。问题是,当我尝试使用它们保存表单时,最近添加的值不是"有效"。 当我尝试以新形式使用它们时,它们甚至都没有。我看到这个值被写入SQLite数据库,但它不能用到django app重启,是一些常见的noob django用户失败,还是某种bug?我可以提供一些代码,但是当我做错事时我不知道。

代码:

模型:

class AilmentDict(models.Model):
    name = models.TextField()

    class Meta:
        managed = False
        db_table = 'ailment_dict'

    def __unicode__(self):
        return u'%s' % (self.name)
    def __str__(self):
        return u'%s' % (self.name)

形式:

class AilmentDictForm(forms.ModelForm):
    name = forms.CharField(widget=forms.TextInput(attrs={'class':'form-control'}), max_length=30, label='Objaw', required=True)

    class Meta:
        model = AilmentDict

视图:

@login_required
def add_ailment(request):

    if request.method == 'GET':
        form = AilmentDictForm()
    elif request.method == 'POST':
        form = AilmentDictForm(request.POST)
        if form.is_valid():
            ailment = form.save(commit=True)
            return render(request, 'examinations/add', {'added': ailment})
        else:
            print(form.errors)

    return render(request, 'examinations/addailment.html', {'form': form})

添加:

<script type="text/javascript">
opener.dismissAddAnotherPopup(
    window,
    "{{ added.id }}",
    "{{ added.name }}"
);
</script>

autocomplete_light注册:

autocomplete_light.register(AilmentDict,
                            search_fields = ['^id', 'name'],
                            add_another_url_name = 'addailment',
                            attrs={
                                'placeholder': '',
                                'data-autocomplete-minimum-characters': 1,
                            },
                            widget_attrs={
                                'data-widget-maximum-values': 0,
                            },
                            )

考试表格中的字段:

ailments = autocomplete_light.MultipleChoiceField('AilmentDictAutocomplete', label='Objawy', required=False)

我不知道你是否还需要更多东西。

1 个答案:

答案 0 :(得分:1)

我对autocomplete-light一无所知,但我怀疑你应该使用ModelMultipleChoiceField而不是MultipleChoiceField