2 回答

TA贡献1813条经验 获得超2个赞
整个前提是有缺陷的。您不能在模型定义中执行这种逻辑,因为那时没有实例,因此没有要比较的值。即使可以,它仍然没有意义,因为模型定义定义了模型具有的数据库列;您不能在数据库中具有不同实例且具有不同列的实例。模型定义适用于整个模型。您需要reason_reject在类定义中。
您可能想要做的是根据模型中的值更改表单。您可以通过覆盖get_fields方法在管理员中执行此操作。
class LeaveAdmin(admin.ModelAdmin):
...
def get_fields(self, request, obj=None):
fields = [....list of fields for the form...]
if obj and obj.rejected:
fields.append('reason_reject')
return fields
注意,您可能要考虑您是否真的需要单独的接受/拒绝字段。对于应用程序的状态最好有一个字段:接受或拒绝。您可以将它们表示为单个单选按钮或下拉菜单。
STATUS_CHOICES = (
(1, 'Accepted'),
(0, 'Rejected'),
)
status = models.IntegerField(choices=STATUS_CHOICES, blank=True, null=True)
添加回答
举报