我有两个具有各自形式的模型。一个有到另一个的外键链接,在这里我想设置一些字段默认数据。
class Lexicon(models.Model):
[...]
case_sensitive = models.BooleanField(default=True)
invariant = models.NullBooleanField(default=False)
diacritics = models.BooleanField(default=True)
[...]
class Meta:
verbose_name = "lexicon"
ordering = ["filename"]
def __str__(self):
return self.filename
class Lexeme(models.Model):
lexicon = models.ForeignKey(Lexicon, on_delete=models.CASCADE)
case_sensitive = models.BooleanField(default=True)
diacritics = models.BooleanField(default=True)
[...]
class Meta:
verbose_name = "lexeme"
我希望 Lexeme 模型字段“case_sensitive”和“diacritics”默认来自 Lexicon。我想表单可能是执行此操作的更好地方。
有什么想法吗?
请您参考如下方法:
据我了解,您只需将数据从 Lexicon 填充到 Lexeme 模型字段。您可以在 FormView 中覆盖 get_form_kwargs,如下所示
def get_form_kwargs(self):
lex_obj = Lexeme.objects.get(pk=self.kwargs['pk'])
kwargs = super().get_form_kwargs()
kwargs['initial']['case_sensitive'] = lex_obj.lexicon.case_sensitive
kwargs['initial']['diacritics'] = lex_obj.lexicon.diacritics
return kwargs
这是你想要的吗?我没有测试过,但我在我的项目中使用过类似的东西。让我知道是否有效。
