Атрибут Basename в тех же маршрутах
Относительно говоря, у меня есть две простые модели: Процессор и Материнская плата.
class Processor(Product):
supply_type = models.CharField(max_length=10)
socket = models.CharField(max_length=20)
cores_amount = models.IntegerField()
threads_amount = models.IntegerField()
technological_process = models.IntegerField()
class Motherboard(Product):
socket = models.CharField(max_length=20)
ram_generation = models.CharField(max_length=10)
ram_type = models.CharField(max_length=10)
ram_slots_amount = models.IntegerField()
Для них также написаны соответствующие сериализаторы.
class ProcessorSerializer(ModelSerializer):
class Meta:
model = Processor
fields = '__all__'
class MotherboardSerializer(ModelSerializer):
class Meta:
model = Motherboard
fields = '__all__'
И, конечно, наборы представлений.
class ProcessorViewSet(ModelViewSet):
queryset = Processor.objects.filter(is_published=True)
serializer_class = ProcessorSerializer
lookup_field = 'slug'
class MotherboardViewSet(ModelViewSet):
queryset = Motherboard.objects.filter(is_published=True)
serializer_class = MotherboardSerializer
lookup_field = 'slug'
В urls был создан SimpleRouter, в который были добавлены следующие маршруты.
router = routers.SimpleRouter()
router.register(r'processors', ProcessorViewSet)
router.register(r'motherboards', MotherboardSerializer)
Когда я пытаюсь выполнить миграцию, я получаю следующую ошибку:
router.register(r'motherboards', MotherboardSerializer)
assert queryset is not None, 'basename аргумент не указан, и could '
AssertionError: basename аргумент не указан, и не удалось автоматически определить имя из набора представлений, так как у него нет .queryset атрибута.
Я попытался добавить этот атрибут, однако появляется ошибка, что метод get_extra_actions не определен. У меня есть три старые модели, добавленные таким же образом. Проблема возникла именно при добавлении новых моделей и маршрутов для них (в данном случае материнской платы). Хотелось бы понять, почему Django ругается в одном случае, но не ругается в другом.