所以我有以下模型:Session,Rider。
基本上我现在想要得到结果,其中骑手被放置在每个会话中,所以基本上它的M:N连接(每个骑手在很多会话中,每个会话都有很多车手)。
现在我应该制作像SessionResult这样的新模型吗?并从Session和Rider中放置两个外键并在此中间位置添加一个位置字段?或者你的建议是什么?
这是模特:
class Rider(models.Model):
first_name = models.CharField(_('First name'), max_length=100, db_index=True)
last_name = models.CharField(_('Last name'), max_length=100, db_index=True)
number = models.IntegerField(_('Rider number'))
team = models.ForeignKey(Team)
country = CountryField()
birthday = models.DateField(_('Birthday'))
birth_place = models.CharField(_('Birth place'), max_length=100)
weight = models.IntegerField(_('Weight'))
height = models.IntegerField(_('Height'))
info = models.TextField(_('Info'))
class Session(models.Model):
title = models.CharField(_('Title'), max_length=100, db_index=True)
event = models.ForeignKey(Event)
start_date = models.DateTimeField(_('Start time'))
end_date = models.DateTimeField(_('End time'))
这样的事情呢?
class SessionResult(models.Model):
rider = models.ForeignKey(Rider)
session = models.ForeignKey(Session)
position = models.IntegerField()
time = models.TimeField()
答案 0 :(得分:3)
你的想法很棒,Django有一个特定的功能来处理它。
您可以使用ManyToManyField through
属性
在你的情况下可能看起来像:
class Session(models.Model):
... other fields ...
riders = models.ManyToManyField(
Rider,
through='SessionResult',
)
使用您的SessionResult
。
如果对你更有意义,你可以将ManyToMany字段放在Rider模型而不是Session上。看看我链接的Django文档,它有非常有用的细节。