2011-04-18 85 views
0

我有以下简化的设置:Django管理:如何既节省联模型没有父

  • 是基于传统的数据模型不能改变。因此,我提出了一个ValidationError,以使用户意识到没有任何更改。表单字段是只读的,我可以使用一个简单的“传递”,但我更喜欢得到这样的消息,即save()没有做它本来打算做的事情,而只是默默地做任何事情。
  • 现在我正在使用应该可编辑的第二个模型扩展旧数据。它以inline的形式包含在遗留模型的ModelAdmin中。我可以将CommentModel本身包含为ModelAdmin,但由于LegacyModel继承了父类的许多功能,因此这会变得复杂且不干。

我想要的只是在内联模型上执行“保存”操作。我认为所有领域只读,它应该工作正常。有人可以给我一个暗示以干净的方式做到这一点吗?

class Legacy(models.Model): 

    legacyData = models.TextField() 

    def clean(self): 
     raise ValidationError("%s model is readonly." % self._meta.verbose_name.capitalize()) 

class Comment(models.Model): 

    legacy = models.OneToOneField(Legacy) 
    comment = models.TextField() 


class LegacyAdmin(admin.ModelAdmin): 

    def __init__(self, *args, **kwargs): 
     self.readonly_fields = self.fields 
     super(LegacyAdmin, self).__init__(*args, **kwargs) 

    model = Legacy 
    inlines = (CommentInline,) 

非常感谢您的时间! :)

回答