Django Model类中的函数没有进行自我论证?

时间:2016-01-22 11:25:23

标签: python django

我得到一个" TypeError:get_query()只取1个参数(0给定)"在以下代码中:

class graph_column_format(models.Model):

    def get_query(self):
        return self.graph_id.query_id   

    graph_id = models.ForeignKey("graph", on_delete=models.CASCADE)
    column = models.ForeignKey("query_column", on_delete=models.CASCADE,
                               limit_choices_to={"query_id": get_query()})

定义在课堂内,所以我不明白为什么我会收到这个错误。

1 个答案:

答案 0 :(得分:2)

如果你有像

这样的模型类的实例,你只能调用该方法
< graph_column_format instance >.get_query()

但是没有办法以这种方式使用limit_choices_to,但你可以在modelForm构造函数中添加过滤器,例如,

假设您在graph_column_format模型上有query_id字段

class graph_column_format_form(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        super(MyOrderForm, self).__init__(*args, **kwargs)
        if self.instance:
            self.fields['query_id'].queryset = graph_column_format.objects.filter(query_id=self.instance.graph_id.query_id)