【问题标题】:Ordering related model values in django-rest admin view在 django-rest 管理视图中订购相关模型值
【发布时间】:2021-07-07 11:38:43
【问题描述】:

我想查看这个视图,其中功能列表按字母顺序排序。

上图中的模型来自于AircraftModel

models.py

class AircraftModelFeature(models.Model):
    name = models.CharField(max_length=60)

    def __str__(self):
        return self.name

class AircraftModel(models.Model):
    features_list = models.ManyToManyField(AircraftModelFeature)
    # ... other stuff ...

    def __str__(self):
        return self.name

serializers.py

class AircraftModelFeatureSerializer(serializers.ModelSerializer):
    class Meta:
        model = AircraftModelFeature
        fields = "__all__"

class AircraftModelSerializer(serializers.ModelSerializer):
    features_list = AircraftModelFeatureSerializer(many=True, read_only=True)
    # ...other stuff...

    class Meta:
        model = AircraftModel
        fields = ['id', 'features_list',] # there are more fields, omitted

views.py

class AircraftModelFeatureViewSet(viewsets.ReadOnlyModelViewSet):
    permission_classes = [IsAdminOrReadOnly]
    queryset = AircraftModelFeature.objects.all().order_by('name')
    serializer_class = AircraftModelFeatureSerializer
    
class AircraftModelViewSet(viewsets.ReadOnlyModelViewSet):
    permission_classes = [IsAdminOrReadOnly]
    queryset = AircraftModel.objects.all().order_by('name')
    serializer_class = AircraftModelSerializer

那么,我怎样才能使该列表排序?

【问题讨论】:

标签: python django django-rest-framework django-admin django-3.0


【解决方案1】:

深入研究Django docs,我找到了解决方案:修改 Admin Django 应用程序正在使用的 Model 类。我必须编辑的文件是 admin.py。

admin.py 之前:

from django.contrib import admin
from pubapi.models import AircraftModelOptional

admin.site.register(AircraftModelOptional)

admin.py 之后:

from django.contrib import admin
from pubapi.models import AircraftModelOptional

class AircraftModelOptionalAdmin(admin.ModelAdmin):
    ordering = ['name']

admin.site.register(AircraftModelOptional, AircraftModelOptionalAdmin)

我得到了什么:

正如 here 所写,可以编辑 Admin Django 应用程序正在使用的模型。

正如here 所写,可以按模型字段对列表进行排序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    • 2014-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多