-
카테고리
-
세부 분야
풀스택
-
해결 여부
미해결
composite field에 대해서 auto increment 적용하기
22.01.05 17:32 작성 조회수 107
0
아래와 같은 클래스가 있습니다.
class Foo(models.Model):
name = models.CharField(max_length=20)
value = models.PositiveIntegerField(default=1, auto_increment=True)
class Meta:
constraints = [
models.UniqueConstraints(fields=["name", "value"], name="unique name value")
]
위에서 value의 auto increment가 name 속성과 연관돼서 동작하도록 구성하고 싶습니다.
예를 들어 Foo(name="김길동")을 생성하면 name="김길동", value=1 레코드가 생성되고, 다시 Foo(name="김길동")를 생성하면 auto_increment로 name="김길동", value=2 레코드가 생성됩니다.
여기서 추가적으로 Foo(name="박길동")을 생성하면 value가 3이 아니라 다시 박길동에 대해서 처음부터 auto_increment가 동작되어 name="박길동", value=1로 생성되도록 하고 싶습니다.
이를 위해서 models.Model의 save 메서드를 오버라이딩하거나 validation을 사용하지않고 구현하는 방법이 있을까요?
답변을 작성해보세요.
1
0
벼락맞은대추나무
질문자2022.01.05
constraints만으로 구현하는 것이 비효율적이거나 어렵다면 save를 오버라이딩하는 방식으로도 괜찮습니다.
하지만 save()를 오버라이딩 한다면 save()의 name 입력값에 대해서 value 최대값을 찾고 +1하는 방식으로 구현해야될 것 같은데 오버헤드가 발생하지는 않을까요?
답변 2