如何使用ORM实现“一对多”表?

时间:2017-08-29 07:54:38

标签: django django-models

RunLog表的Account表是one-to-one。 因此,在帐户模型中,foreignKey不适用于这种情况,好吗?

# the user's account
class Account(models.Model):

    balance = models.CharField(max_length=16)
    runningLog = models.ForeignKey(to='RunningLog')  # here only can do one-to-one

# account running logs
class RunningLog(models.Model):

    from_account = models.CharField(max_length=32)
    to_account = models.CharField(max_length=32)
    content = models.CharField(max_length=128)
    ctime = models.DateTimeField(auto_now_add=True)
    uptime = models.DateTimeField(auto_now=True)

如何使用ORM实现one-to-many情况?

2 个答案:

答案 0 :(得分:0)

您当前的模型关系不是one-to-one,而是many-to-one。可以有多个Accounts具有相同的RunningLogDjango docs

  

要定义多对一关系,请使用ForeignKey

为了获得所需的one-to-many关系,您需要将ForeignKey字段添加到RunningLog模型中:

class RunningLog(models.Model):
    account = models.ForeignKey(to=Account)

答案 1 :(得分:0)

runningLog关系不是一对一的,而是多对一的,因为一个RunningLog实例可以有MANY Account实例指向它。 如果要将MANY RunningLog实例链接到一个帐户,则应该在RunningLog类中将ForeignKey放入Account。 您将能够使用以下命令从帐户访问所有这些运行日志: user_account_instance.runninglog_set.all()