class Colour(models):
...
def colour_preview(self):
return format_html(...)
class ColourTheme(models):
colour1 = models.ForeignKey(Colour)
colour2 = models.ForeignKey(Colour)
colour3 = models.ForeignKey(Colour)
...
def preview(self):
for field in self._meta.get_fields(include_parents=False):
if (field.related_model == Colour):
field.colour_preview()
我有一个带有多个Color外键的ColourTheme模型,我想在这些字段引用的每个Color对象上调用一个函数。上面的最后一行代码失败了。我想在所有颜色字段上调用colour_preview而不对它们进行硬编码(self.colour1.colour_preview()
有效但不理想)。
我怎么能实现这个目标?
答案 0 :(得分:0)
您无法参考该字段以访问相关对象方法。
尝试这样的事情(我还没有测试过):
class ColourTheme(models):
colour1 = models.ForeignKey(Colour)
colour2 = models.ForeignKey(Colour)
colour3 = models.ForeignKey(Colour)
...
def preview(self):
for field in self._meta.get_fields(include_parents=False):
if (field.related_model == Colour):
field_obj = field.value_from_obj(self) # To get obj reference
field_obj.colour_preview()