Поскольку я готовлю свой тест к некоторым моделям, содержащим поле ManyToMany, я проверяю, добавляются ли в поле связанные экземпляры моделей. Однако при доступе к полю ManyToMany для каждой модели я получаю следующее ...
menu.Item.None
menu.Ingredient.None
Что вызывает возврат None
и что можно сделать, чтобы увидеть связанные объекты для каждой соответствующей Поле ManyToMany?
tests.py
class TestForm(TestCase):
@classmethod
def setUpTestData(cls):
test_chef = User.objects.create_user("test_chef")
eggs = Ingredient.objects.create(name="Eggs")
flour = Ingredient.objects.create(name="Flour")
milk = Ingredient.objects.create(name="Milk")
butter = Ingredient.objects.create(name="Butter")
vanilla_extract = Ingredient.objects.create(name="Vanilla Extract")
sugar = Ingredient.objects.create(name="Sugar")
cls.item = Item.objects.create(
name="Crepe",
description="A thin pancake orginiating from France",
chef=test_chef,
created_date=timezone.now(),
standard=True
)
cls.item.ingredients.add(eggs, flour, milk, butter, vanilla_extract, sugar,)
cls.menu = Menu.objects.create(
season="Fall"
)
cls.menu.items.add(cls.item)
def test_form(self):
print(self.menu.items)
print(self.item.ingredients)
models.py
class Menu(models.Model):
season = models.CharField(
max_length=20,
unique=True
)
items = models.ManyToManyField('Item', related_name='items')
created_date = models.DateTimeField(
default=timezone.now)
expiration_date = models.DateTimeField(
blank=True, null=True)
def __str__(self):
return self.season
class Item(models.Model):
name = models.CharField(max_length=200, unique=True)
description = models.TextField()
chef = models.ForeignKey('auth.User', on_delete=models.CASCADE)
created_date = models.DateTimeField(
default=timezone.now)
standard = models.BooleanField(default=False)
ingredients = models.ManyToManyField('Ingredient')
def __str__(self):
return self.name
class Ingredient(models.Model):
name = models.CharField(max_length=200, unique=True)
def __str__(self):
return self.name