首页 > 解决方案 > 在我将迁移应用到翻译后,我遇到了 django-parler 2.0.1 的问题,它不会在管理站点中显示 Products 字段

问题描述

在此处输入图像描述这是我在 models.py 文件中的翻译设置,在我进行同步迁移后,django-parler 2.0.1 不会在管理站点中显示 Products 字段。我目前正在使用 Django 3.0.3。

from django.db import models
from django.urls import reverse
from parler.models import TranslatableModel, TranslatedFields





class Category(TranslatableModel):
    translations = TranslatedFields(
            name = models.CharField(max_length=200,
                                    db_index=True),
            slug = models.SlugField(max_length=200,
                                    db_index=True,
                                    unique=True)
        )

    class Meta:
        # ordering = ('name',)
        verbose_name = 'category'
        verbose_name_plural = 'categories'

    def __str__(self):
        return self.name

    def get_absolute_url(self):
            return reverse('shop:product_list_by_category',
                           args=[self.slug])


class Product(TranslatableModel):
    translations = TranslatedFields(
            name = models.CharField(max_length=200, db_index=True),
            slug = models.SlugField(max_length=200, db_index=True),
            description = models.TextField(blank=True)
        )
    category = models.ForeignKey(Category,
                                 related_name='products',
                                 on_delete=models.CASCADE)
    image = models.ImageField(upload_to='products/%Y/%m/%d',
                              blank=True)

    price = models.DecimalField(max_digits=10, decimal_places=2)
    available = models.BooleanField(default=True)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

    #class Meta:
    #    ordering = ('name',)
    #    index_together = (('id', 'slug'),)

    def __str__(self):
        return self.name

    def get_absolute_url(self):
            return reverse('shop:product_detail',
                           args=[self.id, self.slug])

我已经在 admin.py 文件中注册了模型,但它不会显示产品描述和价格字段,我得到的只是翻译的选项卡。

from django.contrib import admin
from .models import Category, Product
from parler.admin import TranslatableAdmin


@admin.register(Category)
class CategoryAdmin(TranslatableAdmin):
    list_display = ['name', 'slug']

    def get_prepopulated_fields(self, request, obj=None):
            return {'slug': ('name',)}


@admin.register(Product)
class ProductAdmin(TranslatableAdmin):
    list_display = ['name', 'slug', 'price',
                    'available', 'created', 'updated']
    list_filter = ['available', 'created', 'updated']
    list_editable = ['price', 'available']

    def get_prepopulated_fields(self, request, obj=None):
            return {'slug': ('name',)}



我想知道我做错了什么,我想知道是否有更好的方法来使用 Django-parler 2.0.1 进行翻译配置。欢迎任何建议!

标签: pythondjangopython-3.xdjango-modelsdjango-parler

解决方案


显然,我能够通过首先删除所有迁移来解决这个问题,我还不得不删除我的数据库并切换到 PostgreSQL,之后,我重新应用了迁移并且它起作用了。现在所有字段现在都可以在管理站点中看到 yippee!但请注意备份您的数据库,因为所有内容都将被删除..在此处输入图像描述


推荐阅读