首页 > 解决方案 > Django:模型没有出现在管理面板上

问题描述

这是我想在管理面板上显示的模型。我正在通过admin.py文件注册模型admin.site.register(Ad)。我尝试重写注册行两次,出现模型已经注册的异常。

class Ad(AdModel):
    plate = models.CharField(max_length=50, unique=True)
    description = models.TextField(max_length=500)
    ad_type = models.CharField(
        max_length=255,
        choices=AdTypes.get_choices(),
        default=AdTypes.OFFERING,
    )
    price = models.PositiveIntegerField(
        default=0,
        help_text='In cents'
    )
    location = models.CharField(
        max_length=255,
        choices=AdLocations.get_choices(),
        default=AdLocations.VILNIUS,
    )
    user = models.ForeignKey(User, on_delete=models.PROTECT)

    approved_date = models.DateField(null=True, blank=True)
    approved_by = models.ForeignKey(
        User, on_delete=models.PROTECT, related_name='approved_by', null=True
    )

两种基本型号:

class UUIDBaseModel(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)

    class Meta:
        abstract = True

class AdModel(UUIDBaseModel):
    expires_at = models.DateTimeField(null=True)
    is_draft = models.BooleanField(default=False)
    is_active = models.BooleanField(default=False)

    class Meta:
        abstract = True

这真的很奇怪,也许这可能是因为命名“广告”的问题?我有这个模型的序列化程序,一切正常,但管理面板不想显示它。

views.py

class AdCreateViewSet(ModelViewSet, CreateModelMixin):
    serializer_class = AdCreateSerializer
    permission_classes = (AllowAny,)
    filter_backends = [DjangoFilterBackend]
    search_fields = ('plate', 'description', 'user__email')
    queryset = Ad.objects.select_related('user')

    def perform_create(self, serializer):
        user = User.objects.first()
        serializer.save(user=user)  # self.request.user)

serializers.py

class AdCreateSerializer(CustomAdSerializer):
    class Meta:
        model = Ad
        exclude = ['expires_at']
        read_only_fields = ('user',)

在此处输入图像描述

标签: pythondjango

解决方案


推荐阅读