Как построить модель категории после построения унаследованной модели в Django REST Framework

Здравствуйте, у меня вопрос по улучшению унаследованных моделей.

Модель материала - старая модель, и я хочу сделать категорию, используя новую модель 'type'. Но у меня есть небольшая проблема, когда я использую сайт администратора. В админке я надеюсь сначала выбрать "тип", а потом загрузить данные... как мне сделать лучше

  • модели
# new model 
class MaterialType(BaseModel):
    type = models.CharField(choices=MaterialTypeChoice.choices, max_length=50, null=True, blank=True)

    
    def __str__(self):
        return self.type

# old model
class Material(models.Model):
    type = models.ForeignKey(MaterialType, verbose_name=, null=True, blank=True, on_delete=models.SET_NULL)
    name = models.CharField max_length=50, null=True, blank=True)
    size = models.CharField(max_length=50, null=True, blank=True)
    unit = models.CharField(max_length=5, null=True, blank=True)
    price_unit = models.IntegerField(null=True, blank=True)

    
    def __str__(self):
        return self.name
  • сериализаторы
# new
class MaterialTypeListSerializer(serializers.ModelSerializer):
    class Meta:
        model = MaterialType
        fields = ["type"]

# old
class MaterialListSerializer(serializers.ModelSerializer):
    class Meta:
        model = Material
        fields = ["id", "type", "name", "size", "unit", "price_unit"]
  • просмотров
# new
class MaterialTypeList(ListCreateAPIView):
    queryset = MaterialType.objects.all()
    serializer_class = MaterialTypeListSerializer

# old
class MaterialList(ListAPIView):
    queryset = Material.objects.all()
    filter_class = MaterialFilter
    serializer_class = MaterialListSerializer
  • admin
@admin.register(Material)
class MaterialAdmin(ImportExportModelAdmin):
    list_display = ["name", "size", "unit", "price_unit"]
    list_display_links = ("name",)
    list_filter = ("type",)
    list_per_page = 10
    # list_editable = ('type',)
    search_fields = ("name", "size")
    resource_class = MaterialResource

@admin.register(MaterialType)
class MaterialTypeAdmin(ImportExportModelAdmin):
    list_display = ["type"]

    list_filter = ("type",)
    list_per_page = 10
    # list_editable = ('type',)
Вернуться на верх