2016-09-09 1 views
1

그래서 같은 모델을 가지고 :factory.Selfence와 함께 factory.SelfAttribute를 사용하는 방법?

이제
class ItemGroup(models.Model): 
    group_id = models.AutoField(primary_key=True) 
    category = models.CharField(max_length=200, blank=True, null=True) 
    name = models.CharField(max_length=45, blank=True, null=True) 

    def __str__(self): 
     return self.name 

내가 공장 구축을 위해 노력하고있다 :

class ItemGroupFactory(DjangoModelFactory): 
    class Meta: 
     model = ItemGroup 

    category = FuzzyChoice(['category1', 'category2']) 
    name = Sequence(lambda n: "%s%d" % (SelfAttribute("category"), n)) 

문제는이 문제가 해결되지 않습니다를 테스트 나는다면 :

django.db.utils.DatabaseError: Data too long for column 'name' at row 1 

그래서 SelfAttribute를 Sequence와 함께 사용 하시겠습니까? 사용하고 있습니다 :

Django 1.8.14 
djangorestframework 3.4.6 
fake-factory 0.5.3 
mysql-connector-python 2.1.3 
factory-boy 2.7.0 

답변

1

문제는 잘못된 방법이었습니다. 그러한 작업을 위해서, 그것은 내가 사용하는 속성을 기반으로 시퀀스를 만드는 것입니다. LazyAttributeSequence. 좋아요 :

class ItemGroupFactory(DjangoModelFactory): 
    class Meta: 
     model = ItemGroup 

    category = FuzzyChoice(['gadżety', 'jedzenie']) 
    name = LazyAttributeSequence(lambda o,n: "%s%d" % (o.category, n)) 
관련 문제