Django:如何在同一个模型中用另外两个字段的值自动填充一个字段

icomxhvb  于 2023-03-20  发布在  Go
关注(0)|答案(2)|浏览(211)

我想用类别和子类别的值自动填充Django模型中的标签字段。我试图找到解决方案,但大多数答案都是(从另一个模型自动填充)。但我想用同一模型中的两个或更多字段的值自动填充它。

from django.db import models
from .category import cat, sub_cat

# Create your models here.

class Product(models.Model):

    product_id = models.AutoField(primary_key=True)
    product_name = models.CharField(max_length=200)
    category = models.CharField(
        max_length=50, choices=cat(), default="")
    subcategory = models.CharField(
        max_length=50, choices=sub_cat(), default="")
    brand = models.CharField(max_length=50, default="")
    desc = models.TextField(max_length=1500)
    price = models.FloatField(default=0)
    pub_date = models.DateField()
    image = models.ImageField(upload_to="shop/images", default="")
    tags =
m3eecexj

m3eecexj1#

覆盖默认保存方法:

class Product(models.Model):
    fields here     

    def save(self, *args, **kwargs):
        self.tags = self.category + '' + self.subcategory
        super(Product, self).save(*args, **kwargs)

当调用.保存()时,它将自动获取类别和子类别并进行连接。

vdzxcuhz

vdzxcuhz2#

此链接应该包含您要查找的信息:
Django Model Field Default Based Off Another Field in Same Model
在您的情况下,我认为您可能希望创建一个函数,该函数基于其他字段创建您的标记,然后覆盖保存函数以设置标记。

def your_function(self):
    return self.category + ', ' self.subcategory

def save(self, *args, **kwargs):
    if not self.tags:
        self.tags= self.your_function()
    super(Product, self).save(*args, **kwargs)

相关问题