這裏是我的模型:獨特只依賴於一個一對一的關係
class ActIds(models.Model):
#no_celex for index_ids must be unique
no_celex=models.CharField(max_length=15, blank=True, null=True)
class Act(models.Model):
index_ids=models.OneToOneField(ActIds, related_name='index_ids')
eurlex_ids=models.OneToOneField(ActIds, related_name='eurlex_ids')
oeil_ids=models.OneToOneField(ActIds, related_name='oeil_ids')
我想現場no_celex是唯一ONLY,如果它「來自」 index_ids。怎麼做?
更多的解釋:
這必須是不可能:
act=Act()
act.index_ids.no_celex="test"
act.save()
act2=Act()
act2.index_ids.no_celex="test"
act2.save()
但這可能是可能:
act=Act()
act.index_ids.no_celex="test"
act.eurlex_ids.no_celex="test"
act.save()
,這可以是可能太:
act=Act()
act.index_ids.no_celex="test"
act.save()
act2=Act()
act2.eurlex_ids.no_celex="test"
act2.save()
這裏是我的(僞)到目前爲止的代碼:
class ActIdsForm(forms.ModelForm):
class Meta:
model=ActIds
def is_valid(self):
valid=super(ActIdsForm, self).is_valid()
if not valid:
return valid
no_celex=self.cleaned_data.get("no_celex")
try:
#does the no_celex already exist?
act=Act.objects.get(index_ids.no_celex=no_celex)
#if yes, is it the act being saved (ok) or another act (error)?
if act.index_ids.id!="id of the act being saved":
print "pb no_celex already exists"
self._errors['no_celex']=ErrorList([u"no_celex already exists!"])
return False
except:
pass
return True
我的問題:我怎樣才能得到當前行爲的ID(從我ActIds模型)?這是一個更新的形式...
我剛加了我的代碼。 – rom