基于另一个模型中的查找自动写入django模型中的字段

时间:2015-06-10 06:29:53

标签: python django

使用Django 1.8和Python 3.4.0,我正在寻找一种方法,根据另一个字段中的值,在我的模型中自动保存外键引用。这些模型基本上类似于下表:

主要模式

NAME                fkCATEGORY
Joshua the Pig      1
Anders the Cow      2
Piglet              1
Cowabunga           2
Fishy Goldtail      3

类别模型

CATEGORY_ID         CATEGORY
1                   Pig
2                   Cow
3                   Fish

结果表

NAME                CATEGORY
Joshua the Pig      Pig
Anders the Cow      Cow
Piglet              Pig
Cowabunga           Cow
Fishy Goldtail      Fish

这在django中很容易实现。然而,在"主要模型" fkCATEGORY为null,我希望它能够根据另一个模型中的相同搜索词自动填充:

关键字模型

KEYWORD             fkCATEGORY
pig                 1
cow                 2
fish                3

可能我会将关键字设为正则表达式,但目前它并不重要。

最好我想填充"主要模型" fkCATEGORY字段有两种方式: 1.体积庞大,遍历所有行并更新字段,因为我更新了类别和关键字模型。我想我会为此编写命令并通过manage.py访问它; 2.在主模型中保存新行时,使用信号我认为。

......但是我被困住了。我不认为这应该是挣扎,但我无法找到一个好的解决方案。

任何人都在努力向我推进正确的方向吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以覆盖主模型的保存方法,如下所示:

#suppose category model looks like this
class Category(models.Model):
    category = models.CharField(max_length=255)

#main model
class MainModel(models.Model):
    name = models.CharField(max_length=255)
    category = models.ForeignKey(Category, null=True, default=None)


    def save(self):
        for c in Category.objects.all():
            if c.category in self.name:
               self.category = c
               break
        super().save(*args, **kwargs)