2つのモデルがあり、1つは他のエンティティとForeignKey関係を持っています。data_start
重要なのは、ModelBのフィールドの日付はdate_end
、ModelAの日付と等しくなく、それよりも大きい必要があるということです。ModelB内でこの比較(ルール)を実行して保存するにはどうすればよいですか?
class ModelB(models.Model):
date_start = models.DateTimeField('')
date_end = models.DateTimeField('')
class ModelA(models.Model):
name = models.CharField(...)
date_start = models.DateTimeField('')
date_end = models.DateTimeField('')
resource = models.ForeignKey(ModelB,...)
ModelA
構造内ModelA
で1つのModelB
インスタンスに複数のインスタンスが存在する可能性がありModelA
、この場合、比較日のどのバリアントであるかが明確でないため、からこの条件を確認する方が正しいと思います。
したがって、save()メソッドをオーバーライドして、そこでModelA
条件を確認します
class ModelA(models.Model):
name = models.CharField(...)
date_start = models.DateTimeField('')
date_end = models.DateTimeField('')
resource = models.ForeignKey(ModelB,...)
def save(self, *args, **kwargs):
if self.date_end <= self.resource.date_start:
raise Exception("resource.date_start can't be equal or grater then date_end")
super().save(*args, **kwargs)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加