我如何显示产品的类别名称而不是类别对象(1)django 3.1
How do i display the category name of a product instead of Category object (1) django 3.1
所以我的 django 后端没有显示类别名称,而是给我一个类别对象结果 screenshot of undesired result under the category field。我该如何解决这个问题?
下面是我的 admin.py 和 model.py
的片段
category/admin.py
from django.contrib import admin
from .models import Category
# Register your models here.
class CategoryAdmin(admin.ModelAdmin):
prepopulated_fields = {'slug': ('category_name',)}
list_display = ('category_name', 'slug')
admin.site.register(Category, CategoryAdmin)
categories/model.py
from django.db import models
# Create your models here.
class Category(models.Model):
class Meta:
verbose_name = 'category'
verbose_name_plural = 'categories'
category_name = models.CharField(max_length=50, unique=True)
slug = models.SlugField(max_length=100, unique=True)
description = models.TextField(max_length=255, blank=True)
cat_image = models.ImageField(upload_to='photos/categories', blank=True)
def __str__(self):
return self.category_name
store/models.py
class Product(models.Model):
product_name = models.CharField(max_length=200, unique=True)
slug = models.SlugField(max_length=200, unique=True)
description = models.TextField(max_length=500, blank=True)
price = models.IntegerField()
images = models.ImageField(upload_to='photos/products')
stock = models.IntegerField()
out_of_stock = models.BooleanField(default=False)
is_available = models.BooleanField(default=True)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
created_date = models.DateTimeField(auto_now_add=True)
modified_date = models.DateTimeField(auto_now=True)
def __str__(self):
return self.product_name
store/admin.py
from django.contrib import admin
from .models import Product
# Register your models here.
class ProductAdmin(admin.ModelAdmin):
list_display = ('product_name', 'price', 'category',
'modified_date', 'is_available', 'out_of_stock')
prepopulated_fields = {'slug': ('product_name',)}
admin.site.register(Product, ProductAdmin)
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'category',
'accounts',
'store',
检查您的对象的字符串表示形式。 __str__
是类别 class 的一部分,那么管理页面应该使用它来显示此类列表中的对象信息。
from django.db import models
# Create your models here.
class Category(models.Model):
class Meta:
verbose_name = 'category'
verbose_name_plural = 'categories'
category_name = models.CharField(max_length=50, unique=True)
slug = models.SlugField(max_length=100, unique=True)
description = models.TextField(max_length=255, blank=True)
cat_image = models.ImageField(upload_to='photos/categories', blank=True)
# here!
def __str__(self):
return self.category_name
所以我的 django 后端没有显示类别名称,而是给我一个类别对象结果 screenshot of undesired result under the category field。我该如何解决这个问题?
下面是我的 admin.py 和 model.py
的片段category/admin.py
from django.contrib import admin
from .models import Category
# Register your models here.
class CategoryAdmin(admin.ModelAdmin):
prepopulated_fields = {'slug': ('category_name',)}
list_display = ('category_name', 'slug')
admin.site.register(Category, CategoryAdmin)
categories/model.py
from django.db import models
# Create your models here.
class Category(models.Model):
class Meta:
verbose_name = 'category'
verbose_name_plural = 'categories'
category_name = models.CharField(max_length=50, unique=True)
slug = models.SlugField(max_length=100, unique=True)
description = models.TextField(max_length=255, blank=True)
cat_image = models.ImageField(upload_to='photos/categories', blank=True)
def __str__(self):
return self.category_name
store/models.py
class Product(models.Model):
product_name = models.CharField(max_length=200, unique=True)
slug = models.SlugField(max_length=200, unique=True)
description = models.TextField(max_length=500, blank=True)
price = models.IntegerField()
images = models.ImageField(upload_to='photos/products')
stock = models.IntegerField()
out_of_stock = models.BooleanField(default=False)
is_available = models.BooleanField(default=True)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
created_date = models.DateTimeField(auto_now_add=True)
modified_date = models.DateTimeField(auto_now=True)
def __str__(self):
return self.product_name
store/admin.py
from django.contrib import admin
from .models import Product
# Register your models here.
class ProductAdmin(admin.ModelAdmin):
list_display = ('product_name', 'price', 'category',
'modified_date', 'is_available', 'out_of_stock')
prepopulated_fields = {'slug': ('product_name',)}
admin.site.register(Product, ProductAdmin)
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'category',
'accounts',
'store',
检查您的对象的字符串表示形式。 __str__
是类别 class 的一部分,那么管理页面应该使用它来显示此类列表中的对象信息。
from django.db import models
# Create your models here.
class Category(models.Model):
class Meta:
verbose_name = 'category'
verbose_name_plural = 'categories'
category_name = models.CharField(max_length=50, unique=True)
slug = models.SlugField(max_length=100, unique=True)
description = models.TextField(max_length=255, blank=True)
cat_image = models.ImageField(upload_to='photos/categories', blank=True)
# here!
def __str__(self):
return self.category_name