저장시 외부 서비스 (어떤 방식 으로든 django와 관련 없음)에서 계정 생성을 트리거하는 장고 모델이 있습니다. 테스트를 위해이 계정 생성을 억제하고 싶습니다. 관리자의 save() 메서드를 재정 의하여 거기에서 kwarg를 팝하거나 Non-database field in Django model에 해당하는 모델에 데이터베이스 필드 이외의 속성을 추가하고이를 내 저장 메서드에서 확인할 수 있습니다.데이터베이스가 아닌 필드에 대한 django의 공장 자식
그러나 factoryboy를 사용하여 내 개체를 만들려고 할 때 모델에 실제 필드가 있는지 확인하는 것처럼 보이지만 속성이 필드가 아니기 때문에 충돌이 발생합니다.
class MyModel(models.Model):
name = models.CharField()
create_external_account = True
def save(self, *args, **kwargs):
if create_external_account:
...
class MyModelFactory(factory.django.DjangoModelFactory):
class Meta:
model = MyModel
name = factory.Sequence(lambda n: 'name%d' % n)
create_external_account = False
내가 factoryboy를 통해 이와 같은 추가 매개 변수를 전달할 수있는 방법에 대한 의견이 있으십니까?
올바른 트랙에서 AFAICT를 사용하면 플래그를 설정 또는 해제 할 수 없습니다. 사안 별 사례; 전체 공장에 대해 설정 (또는 설정 해제)해야합니다. 일부 테스트에서는이 플래그를 설정해야 외부 계정이 생성되었는지 확인할 수 있습니다. 나는 두 개의 다른 공장을 만들 수 있다고 생각합니다. 하나는 공장을, 하나는 그렇지 않습니다. – askvictor