模型本身和嵌套的Meta使用相同的列表

时间:2017-09-15 08:51:16

标签: django

Django 1.11.5

此代码的问题在于我已经在模型中创建了一个列表(注释"字段列表已创建")。然后在Meta嵌套类中,我想使用相同的列表。

是否有可能不创建两次列表?

utils.py

class Person(LoginRequiredMixin,
             models.Model):

    def get_composed_string(self):

        composed_string = ""

        field_list = get_distinctive_fields() # Field list created.

        for field in field_list:
            composed_string += value

    def __str__(self):
        return self.get_composed_string()

    class Meta:
        unique_together = get_distinctive_fields() # Failed to use already created list.

models.py

$('#div1').scroll(function() {
  $('#div2').scrollTop($('#div1').scrollTop());
});

$('#div2').scroll(function() {
  $('#div1').scrollTop($('#div2').scrollTop());
});

1 个答案:

答案 0 :(得分:0)

我看到了解决这个问题的两种方法。首先,您可以使用常量来表示独特字段列表而不是方法。即DISTINCTIVE_FIELDS = [...]

另一方面,您可以在Meta类中定义独特字段,然后在get_composed_string方法中使用它。像

这样的东西
def get_composed_string(self):
    return " ".join(self.Meta.unique_together)

如果您对get_composed_string以外的任何内容不需要此__str__,则可以直接在__str__方法中执行此操作...