我只是想为一个模型的管理表单上的一个字段配置一个filter\u水平小部件。但是,当我尝试使用\u set来反转m2m关系时,会出现以下错误。你知道吗
我正在为其创建表单的模型称为Statement
。我尝试使用一个字段,它调用了keywords
,它用另一个模型绘制了一个m2m。你知道吗
class Statement(models.Model):
statement_id = models.CharField(max_length=200)
title = models.CharField(max_length=200)
issue_date = models.DateField("Issue-Date")
author = models.ForeignKey(Person)
released_by = models.ForeignKey(Organization)
keywords = models.ManyToManyField('KeywordInContext')
因此,在表单中,我尝试配置filter\u horizontal小部件,但是当我尝试使用keywords_set
时,得到了一个属性错误。你知道吗
class StatementForm(forms.ModelForm):
statement_keywords = forms.ModelMultipleChoiceField(
queryset=KeywordInContext.objects.all(),
required=False,
label=('Select keywords that you would like to assign to this statement on the left. Keywords that are assigned to this statement are on the right.'),
widget=FilteredSelectMultiple(
verbose_name='Keywords Associated with Statement',
is_stacked=False
)
)
def __init__(self, *args, **kwargs):
super(StatementForm, self).__init__(*args, **kwargs)
if self.instance.pk:
self.fields['statement_keywords'].initial = self.instance.keywords_set.all() ##CAUSES ATTRIBUTE ERROR
def save(self, commit=True):
statement = super(StatementForm, self).save(commit=False)
if commit:
statement.save()
if statement.pk:
statement.keywords_set = self.cleaned_data['keywords'] #change to keyword if need be
self.save_m2m()
return statement
我收到的错误信息是
File "./gtr_site/forms.py", line 73, in __init__
self.fields['statement_keywords'].initial = self.instance.keywords_set.all()
AttributeError: 'Statement' object has no attribute 'keywords_set'
最让我困惑的是,这个错误消息可以识别Statement对象,但是提供给我访问“keywords\u set”属性(试图反转m2m关系)的信息是不正确的。你知道吗
问题是什么?这可能是一个次要的语法问题,但这就是我认为我能够用这种方式逆转关键字字段的m2m关系的方式。你知道吗
您在语句上有多个关系,要访问此关系是throw keywords而不是keywords\u set
要在KeywordInContext模型上访问此关系,必须设置throw语句
相关问题 更多 >
编程相关推荐