我有一个名为Team的模型。团队有一个用户作为team_leader,可以拥有多个team_member。
在“用户”下,我添加了以下字段:
class User(AbstractUser):
team_leader = models.OneToOneField(Team, null=True, blank=True)
team_member = models.ForeignKey(Team, null=True, blank=True)
显然,用户不应该同时成为team_leader和team_member。我已将两个字段都设置为null / blank,因此我总是可以将其中一个留空。但是为了额外的预防措施,我希望在激活其他字段时完全禁用其中一个字段。
我知道disabled功能,但它只用于禁用表单上的字段。我希望通过完全禁用一个模型字段来消除任何篡改的可能性。
有办法做到这一点吗?
答案 0 :(得分:0)
class UserForm(ModelForm):
def clean(self):
cleaned_data = super(UserForm, self).clean()
team_leader = cleaned_data.get('team_leader', None)
team_member = cleaned_data.get('team_member', None)
if team_leader and len(team_member)!=0:
if team_leader in team_member:
raise forms.ValidationError("team_leader can't in team_member")
class Meta:
model = User
fields = ['team_leader', 'team_member']
class UserAdmin(admin.ModelAdmin):
form = UserForm