factoryboyを使用してプロジェクトでDjangoモデルのテストデータを作成しようとしています。 1つのフィールド、すなわちManyToManyField
を除いて、データはFaker
によって生成されています。他の組み込みモデルとの多対多の関係は、django.contrib.auth.model
という名前のグループです。ManyToManyFieldに対してダミーデータを設定できません
class Voucher(models.Model):
code = models.CharField(max_length=20, null=True, blank=True, unique=True)
is_enabled = models.BooleanField('enable voucher', default=True, help_text='A soft delete mechanism for the voucher.')
start_date = models.DateTimeField(null=True, blank=True)
end_date = models.DateTimeField(null=True, blank=True)
member_roles = models.ManyToManyField(to=Group, related_name='member_roles')
def __str__(self):
return "{}".format(self.code)
class Meta:
verbose_name = 'Voucher'
verbose_name_plural = 'Vouchers'
これは私のモデルであり、これは私がダミーデータを生成するために作成した工場です:
class VoucherFactory(django.DjangoModelFactory):
class Meta:
model = 'app.Voucher'
code = Faker('first_name')
is_enabled = fuzzy.FuzzyChoice([True, False])
start_date = fuzzy.FuzzyDateTime(datetime.datetime.now(pytz.utc))
end_date = fuzzy.FuzzyDateTime(datetime.datetime.now(pytz.utc))
@factory.post_generation
def member_roles(self, create, extracted, **kwargs):
if not create:
return
if extracted:
for member_role in extracted:
self.member_roles.add(member_role)
データはVoucher
モデルの多くの関係に多くの本に対して作成voucher_member_roles
テーブルを除いて、正常満たされます。私はこのテーブルにもデータが入るようにしたい。
私には何が欠けていますか?