我为模型创建了一个自定义的manytomany字段。保存此模型时 我想在m2m字段中运行验证器。
问题:未调用方法validate;就像在外国领域一样。
我想要完成的是,当保存模型时,我想比较一个值 从该模型到(即将成为)相关模型(我的FK字段执行该atm)。 我知道这可以在模型或模型中完成,但是从这种验证开始 在整个项目中,我希望在模型领域中保持一致 使用关系字段。
示例模型:
class Member(models.Model):
''' Stores mailinglist members. These are no django-system users. '''
owner = models.ForeignKey(Owner)
first_name = models.CharField(max_length=80, blank=True)
last_name = models.CharField(max_length=80, blank=True)
categories = CustomManyToManyField(Category)
class Category(models.Model):
''' Categories corresponding to a site and system user. '''
owner = models.ForeignKey(Owner)
name = models.CharField(max_length=80)
当我创建或更新成员并添加类别时,我想比较是否
member.owner == category.owner
。 CustomManyToManyField
应该进行此验证。
不知何故,我必须覆盖保存/验证方法。
如果这是不可能的,我是否正确我可以创建一个自定义管理器来实现此目的 行为?我所要做的就是让我的经理成为默认经理。 (从来没有这样做过,但看起来似乎并不那么难)。
答案 0 :(得分:0)
我不确定该模型是否能够识别它 - 它可以在您的类定义的约束内运行,但我认为需要实现一些更高级别的逻辑来执行您所建议的操作。
尝试在更新成员时添加类别中的定义,并添加在类别中传递的类别并相应地检查信息。例如在您的Member类中添加以下定义:
def compare_owner(self, category):
if self.owner == category.owner :
return true;
else
return false;
现在,当您在视图中时,可以从Member对象调用此定义。
member = Member(pk=2);
category = Category(pk=3);
if member.compare_owner(category) :
//success;