我在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表中的链接/显示创建默认值,而不是手动执行。
无论如何,我可以指出正确的方向吗?
如果要基于trann字段在DocLink实例中设置链接/显示默认值,则可以覆盖模型的save方法。
例如,以下代码显示了如何在没有值的情况下设置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的所有DocLink:
# t is an instance of Tran class
t.doclinks.all()
因此,您可以遍历此列表并执行所需的操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句