在模型中做出选择后清空表格

问题描述 投票:0回答:1

我有这个类别的 django 模型:

class CategoryModel(models.Model):
CATEGORY_CHOICES = [
    ('first','hardware'),
    ('second','software'),
    ('third','network')
]
category = models.CharField(max_length=15,null=False,blank=False,choices=CATEGORY_CHOICES)

class Meta:
    db_table = 'categories_table'

在数据库上,它创建了表,但它是空的,我希望它有我在 CATEGORY_CHOICES 中定义的每个选择的三个实例

我想要自动填充,而不需要手动创建实例

django django-models django-forms
1个回答
0
投票

同时拥有

choices
CategoryModel
模型没有多大意义。通常是其中之一,或另一个,而不是两者。

确实,通常可以设置

Category
,然后设置
Product
,其中:

class Category(models.Model):
    name = models.CharField(max_length=15, null=False, blank=False, unique=True)

    def __str__(self):
        return self.name

    class Meta:
        db_table = 'categories_table'


class Product(models.Model):
    category = models.ForeignKey(Category, on_delete=models.PROTECT)

然后您可以使用以下命令在 shell 中创建类别:

Category.objects.bulk_create(
    [Category(name=name) for name in ['hardware', 'software', 'network']]
)

如果您不会对类别进行太多查询,或按类别进行计数,或对类别进行聚合,您也可以决定省略

Category
模型,而只创建一个用于刺破预定义选择的字段,例如:

CATEGORY_CHOICES = [
    ('hardware', 'hardware'),
    ('software', 'software'),
    ('network', 'network'),
]


# no Category model, a direct field of Product
class Product(models.Model):
    category = models.CharField(max_length=15, choices=CATEGORY_CHOICES)

但是我推荐第一种方法。

© www.soinside.com 2019 - 2024. All rights reserved.