feat(core): Add supprt to model_instance fixture for manytomany field
ref: #783
This commit is contained in:
41
app/tests/fixtures/model_instance.py
vendored
41
app/tests/fixtures/model_instance.py
vendored
@ -2,6 +2,7 @@ import datetime
|
||||
import pytest
|
||||
|
||||
from django.apps import apps
|
||||
from django.db import models
|
||||
|
||||
|
||||
|
||||
@ -49,9 +50,37 @@ def model_instance(django_db_blocker, model_user, model, model_kwargs):
|
||||
|
||||
else:
|
||||
|
||||
kwargs = model_kwargs.copy()
|
||||
new_kwargs = model_kwargs.copy()
|
||||
|
||||
new_kwargs.update( kwargs_create )
|
||||
|
||||
|
||||
kwargs = {}
|
||||
|
||||
many_field = {}
|
||||
|
||||
for field, value in new_kwargs.items():
|
||||
|
||||
if isinstance(getattr(model, field).field, models.ManyToManyField):
|
||||
|
||||
if field in many_field:
|
||||
|
||||
many_field[field] += [ value ]
|
||||
|
||||
else:
|
||||
|
||||
many_field.update({
|
||||
field: [
|
||||
value
|
||||
]
|
||||
})
|
||||
|
||||
continue
|
||||
|
||||
kwargs.update({
|
||||
field: value
|
||||
})
|
||||
|
||||
kwargs.update( kwargs_create )
|
||||
|
||||
if random_field:
|
||||
|
||||
@ -65,6 +94,14 @@ def model_instance(django_db_blocker, model_user, model, model_kwargs):
|
||||
**kwargs
|
||||
)
|
||||
|
||||
|
||||
for field, values in many_field.items():
|
||||
|
||||
for value in values:
|
||||
|
||||
getattr(obj, field).add( value )
|
||||
|
||||
|
||||
model_objs += [ obj ]
|
||||
|
||||
return obj
|
||||
|
Reference in New Issue
Block a user