我的django模型包含incident_type
和closed
字段。根据这些字段,我想返回渲染一些文本的函数。
在模型中使用这种get_renderer
方法是否可以,或者我应该将此逻辑移到其他地方?据我了解,这种方法违反了单一责任原则。
class Incident(models.Model):
BAD_RESPONSE = 'bad_response'
SLOW_RESPONSE = 'slow_response'
INCIDENT_TYPE_CHOICES = (
(BAD_RESPONSE, 'Webpage is not available'),
(SLOW_RESPONSE, 'Webpage is slow'),
)
incident_type = models.CharField(max_length=50, choices=INCIDENT_TYPE_CHOICES)
closed = models.BooleanField()
def get_renderer(self):
if self.incident_type == self.BAD_RESPONSE:
if self.closed:
return render_page_up_screen
else:
return render_page_down_screen
答案 0 :(得分:2)
我认为在视图层中的某处找到此方法会更合适。保持模型与Web和渲染相关概念松散耦合通常是很好的做法。它使模型更灵活,更适应变化。
将get_renderer()
移到您的视图中应该是直截了当的吗?它仍然可以通过indicdent_type
实例访问closed
和Indcident
字段以进行呈现决策。