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

时间:2020-07-18 18:25:10

标签: python-3.x django django-models

我想用类别和子类别的值自动填充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 = 

2 个答案:

答案 0 :(得分:1)

覆盖默认的保存方法:

class Product(models.Model):
    fields here     

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

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

答案 1 :(得分:1)

此链接应包含您要查找的信息:

Django Model Field Default Based Off Another Field in Same Model

在您的情况下,我认为您想创建一个基于其他字段创建标签的功能,然后覆盖save功能以设置标签。

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


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