根据对象字段选择limit_choices_to的查询集

时间:2014-03-23 21:45:18

标签: django django-models django-views

我试图将外部字段的选择限制为那些看起来像对象self的其他对象。

我试过这个:

class Model1(models.Model):
    entry = models.ForeignKey(Model2, limit_choices_to='get_limit_choices_to')
    number = IntegerField()

    def get_limit_choices_to(self):
        return Model2.objects.filter(expenditure_type=self.expenditure_type)

class Model2(models.Model):
    number = IntegerField()

但我收到了错误

_filter_or_exclude() argument after ** must be a mapping, not str

我不知道limit_choices_to是否是正确的方法。也许我应该在a或views中选择查询集。

错误说limit_choices_to='get_limit_choices_to'是一种错误的引用方法,但我怎样才能正确引用该方法?我无法使用

limit_choices_to=lambda: {'model1_set': self}

,也不

limit_choices_to=lambda: {'number': number}

我正在使用Django 1.7。

1 个答案:

答案 0 :(得分:-3)

您的功能应该在模型之前。并应返回字典

def get_limit_choices_to():
    return {'entry': Model2.objects.get(number=1).id}

class Model1(models.Model):
    entry = models.ForeignKey(Model2, limit_choices_to=get_limit_choices_to)
    number = IntegerField()

class Model2(models.Model):
    number = IntegerField()