Django:根据外键存在为模型实例创建可编辑的默认值
Django: Creating editable default values for model instance based on foreignkey existance
我正在玩 Django,想知道是否有一种方法可以遍历我创建的两个不同模型的实例?
/ models.py:
class Tran(models.Model):
name = models.CharField(max_length=300)
description = models.CharField(max_length=2000)
type = models.ForeignKey(TransactionType)
def __str__(self):
return self.name
class DocLink(models.Model):
trann = models.ForeignKey(Transaction)
t_link = models.CharField(max_length=2000)
t_display = models.CharField(max_length=1000)
p_display = models.CharField(max_length=300)
p_link = models.CharField(max_length=2000)
def __str__(self):
return self.link
我想做的事情:
查看每个 Tran 实例并在 DocLink table 中为 links/displays 创建默认值,而不是手动执行。
有没有什么方法可以指引我正确的方向?
如果您想在基于 trann 字段的 DocLink 实例中设置 links/displays 默认值,您可以覆盖模型的保存方法。
例如,下面的代码显示了如何设置 t_link 如果它没有值:
class DocLink(models.Model):
trann = models.ForeignKey(Transaction)
t_link = models.CharField(max_length=2000)
t_display = models.CharField(max_length=1000)
p_display = models.CharField(max_length=300)
p_link = models.CharField(max_length=2000)
def __str__(self):
return self.link
def save(self, *args, **kwargs):
if not self.t_link:
pass # TODO set self.t_link based on trann
super(DocLink, self).save(*args, **kwargs)
您也可以将模型的 trann 字段更改为:
trann = models.ForeignKey(Transaction, related_name="doclinks")
然后通过以下方式访问 Tran 的所有文档链接:
# t is an instance of Tran class
t.doclinks.all()
所以你可以遍历这个列表并做你想做的事。
我正在玩 Django,想知道是否有一种方法可以遍历我创建的两个不同模型的实例?
/ models.py:
class Tran(models.Model):
name = models.CharField(max_length=300)
description = models.CharField(max_length=2000)
type = models.ForeignKey(TransactionType)
def __str__(self):
return self.name
class DocLink(models.Model):
trann = models.ForeignKey(Transaction)
t_link = models.CharField(max_length=2000)
t_display = models.CharField(max_length=1000)
p_display = models.CharField(max_length=300)
p_link = models.CharField(max_length=2000)
def __str__(self):
return self.link
我想做的事情:
查看每个 Tran 实例并在 DocLink table 中为 links/displays 创建默认值,而不是手动执行。
有没有什么方法可以指引我正确的方向?
如果您想在基于 trann 字段的 DocLink 实例中设置 links/displays 默认值,您可以覆盖模型的保存方法。
例如,下面的代码显示了如何设置 t_link 如果它没有值:
class DocLink(models.Model):
trann = models.ForeignKey(Transaction)
t_link = models.CharField(max_length=2000)
t_display = models.CharField(max_length=1000)
p_display = models.CharField(max_length=300)
p_link = models.CharField(max_length=2000)
def __str__(self):
return self.link
def save(self, *args, **kwargs):
if not self.t_link:
pass # TODO set self.t_link based on trann
super(DocLink, self).save(*args, **kwargs)
您也可以将模型的 trann 字段更改为:
trann = models.ForeignKey(Transaction, related_name="doclinks")
然后通过以下方式访问 Tran 的所有文档链接:
# t is an instance of Tran class
t.doclinks.all()
所以你可以遍历这个列表并做你想做的事。