我正在编写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)
我不知道你是否还需要更多东西。
答案 0 :(得分:1)
我对autocomplete-light一无所知,但我怀疑你应该使用ModelMultipleChoiceField
而不是MultipleChoiceField
。