【问题标题】:call self method inside a django model fields for get choices在 django 模型字段中调用 self 方法以获取选择
【发布时间】:2015-01-09 07:45:02
【问题描述】:

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

我搜索了 stackoverflow 和 google 并找到了一些解决方案,但这些解决方案在我的情况下不起作用。这是一些已经存在的解决方案。 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

请帮我找出解决办法。

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    self 在模型类定义时不可用。

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

    【讨论】:

      猜你喜欢
      • 2021-08-21
      • 1970-01-01
      • 1970-01-01
      • 2014-08-17
      • 2021-11-27
      • 2016-10-14
      • 1970-01-01
      • 2021-09-18
      • 2013-01-24
      相关资源
      最近更新 更多