Pytest Fixture seeing Прямое назначение на прямую сторону множества "многие ко многим" запрещено

Не уверен, почему я получаю эту ошибку при запуске моего pytest с приспособлением. Я совсем новичок в этом деле, поэтому не совсем уверен, как отлаживать это

TypeError: Direct assignment to the forward side of a many-to-many set is prohibited. Use tags.set() instead.

Ошибка

Factory

from addresses.models import Address
from factories.account import UserFactory
from factories.tag import TagFactory
​
import factory
from faker import Faker
​
fake = Faker()
​
​
class AddressFactory(factory.django.DjangoModelFactory):
    class Meta:
        model = Address
​
    address = f"0x{fake.ean(length=13)}"  # ean is fake license plate
    slug = address
    blockchain = fake.cryptocurrency_name()
    created_by = factory.SubFactory(UserFactory)
    modified_by = factory.SubFactory(UserFactory)
    public = fake.pybool()  # random True/False
    tags = factory.SubFactory(TagFactory)

Тест

import pytest
​
from .models import Address
​
def test_new_address(address_factory: Address):
    address = address_factory.build()
    print(address)
    assert True

conftest.py

from addresses.models import Address
from tags.models import Tag
from accounts.models import User
from factories import UserFactory, TagFactory, AddressFactory
​
import pytest
from pytest_factoryboy import register
​
register(TagFactory)  # tag_factory
register(AddressFactory)  # address_factory
register(UserFactory)  # user_factory
​
​
@pytest.fixture
def new_tag(db, tag_factory) -> Tag:
    return tag_factory.create()  # Save user to test database
​
​
@pytest.fixture
def new_address(db, address_factory) -> Address:
    return address_factory.create()  # Save user to test database
​
​
@pytest.fixture
def new_user(db, user_factory) -> User:
    user = user_factory.create()  # Save user to test database
    return user

Модели

from django.db import models
​
from accounts.models import User
from tags.models import Tag
​
​
class Address(models.Model):
    address = models.CharField(max_length=255)
    blockchain = models.CharField(max_length=255)
    slug = models.SlugField(
        max_length=255
    )  # unique identifier for Address instead of using ID
    created_at = models.DateTimeField(auto_now_add=True)
    modified_at = models.DateTimeField(auto_now=True)
    created_by = models.ForeignKey(
        User, on_delete=models.CASCADE, related_name="created_by"
    )
    modified_by = models.ForeignKey(
        User, on_delete=models.CASCADE, related_name="modified_by"
    )
    public = models.BooleanField(default=False)
    tags = models.ManyToManyField(
        Tag, related_name="addresses"
    )  # related_name set so you can call tag.addresses.all() instead of tag.address_set.all()
​
    def __str__(self):
        return self.address
​
​
from django.db import models
​
​
class Tag(models.Model):
    name = models.CharField(max_length=255)
    description = models.TextField()
​
    def __str__(self):
        return self.name
Вернуться на верх