在django模型字段中调用self方法以获取选择

时间:2015-01-09 07:45:02

标签: django django-models

我想从django模型字段调用self方法来获取选择选项。

我搜索stackoverflow以及谷歌并找到一些解决方案,但这些解决方案在我的情况下不起作用。这里有一些解决方案已经存在。 Django: Call self function inside a Django model

这是我的模特:

MPL_CHOICE = (
    ("a", "assistance"),
    ("b", "Performed"),
    ("n", "Need assistance"),
    ("o", "Observed"),
)

class ProcedurName(models.Model):
    my_choices = models.CharField(
        "My Choices", 
        max_length=100, 
        null=False, 
        blank=False, 
        choices=self.mpl_choice_filed()
    )
    def mpl_choice_filed(self):
        if self.pk:
            avrage_acore = self.avrage_acore.all()
            MPL_CHOICE_NEW = [(m.value,m.label) for m in minimun_avrage_acore]
            return MPL_CHOICE_NEW
        else:
            return MPL_CHOICE


class ChoicesAfterEdited(models.Model):
    label = models.CharField(
            "MinimunAvrageScore Lavel",
            max_length=250,
        )
    value = models.CharField(
            "MinimunAvrageScore Value",
            max_length=250,
        )
    procedure = models.ForeignKey(
        ProcedureSetup, 
        null=True, blank=True, 
        related_name='avrage_acore'
    )

如果您看到模型,在my_choices字段中我尝试调用self.mpl_choice_filed方法但我收到此错误。

NameError: name 'self' is not defined

请帮我找出解决方案。

1 个答案:

答案 0 :(得分:1)

self在Model类定义时不可用。

无论如何,对于choices模型的不同实例,您不能有不同的ProcedurName。您应该使用表单处理中的choices进行操作。