使用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.在主模型中保存新行时,使用信号我认为。
......但是我被困住了。我不认为这应该是挣扎,但我无法找到一个好的解决方案。
任何人都在努力向我推进正确的方向吗?
谢谢!
答案 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)