第一个文章!我正在尝试在滤镜中预选一个选项,然后将我添加到模型的change_form中。预选选项的ID在URL中。我将如何在我的表单的 init 中检索它?
我看到了此链接,在init中检索URL,但是考虑到该表格是由管理员自动实例化的,它似乎不符合账单。(除非我缺少什么?)
这是我的代码。
class Section(models.Model):
title = models.CharField()
groups = models.ManyToManyField('Group', related_name='sections')
class Group(models.Model):
title = models.CharField()
class GroupForm(forms.ModelForm):
//Adding a filter-horizontal to the
sections = forms.ModelMultipleChoiceField(
queryset=Section.objects.all(),
required=False,
widget=FilteredSelectMultiple(
verbose_name=('Sections'),
is_stacked=False
)
)
class Meta:
model = Group
def __init__(self, *args, **kwargs):
super(GroupForm, self).__init__(*args, **kwargs)
if self.instance.pk:
self.fields['sections'].initial = self.instance.sections.all()
else:
//How-to...
//Retrieve sectionID from URL and add to initial
self.fields['sections'].initial = …
def save(…)
//saving the selected sections
有一个简单的方法吗?
我设法通过jQuery做了我想做的事情,但是我想知道是否有一种在init方法中进行的方法……
编辑:这是我当前的JS片段,以防万一可能对某人有用……基本的jQuery,但是无论如何……
function getFromURI(URI, paramName) {
var hash;
if(paramName != undefined){
URI = URI.split('&');
for(var i = 0; i < URI.length; i++){
hash = URI[i].split('=');
if (hash[0] == paramName)
return hash[1]
}
}
return null
}
var q = document.URL.split('?')[1];
var id = getFromURI(unescape(q), 'sectionId')
$('#id_sections_from option[value="' + id + '"]').detach().appendTo('#id_sections_to')
好吧,寻找与众不同的东西,我遇到了克里斯·普拉特(Chris Pratt)的这个很好的答案,这正是我当时正在寻找的。
事实证明,可以通过Kwargs访问"请求" ...
无论如何将此作为答案...