我的应用程序中有 2 个模型:
- 用户
- 塔
我的目标是使用中间表将许多塔与用户相关联,因为我需要添加一段时间。
所以我的模型中有这样的东西:
class Tower(models.Model):
name = models.CharField(max_length=128)
class User(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField('Tower', through='Dates')
class Dates(models.Model):
user = models.ForeignKey('User', on_delete=models.CASCADE)
tower = models.ForeignKey('Tower', on_delete=models.CASCADE)
begin_date = models.DateTimeField()
end_date = models.DateTimeField()
但我的目标是在类 Dates 中将字段塔设置为这样的多对多:
tower = models.ManyToManyField('Tower', blank=True)
这样我就可以在一定时期内将许多塔与用户相关联。但不幸的是,django 说我需要对 Tower 和 User 类使用 forgeignkey。
对此有什么解决办法吗?直接应用中间表中的多对多字段?或者我必须创建一个新类,类似于 GroupTower,它与 Tower 类具有多对多字段?像这样的东西:
class Tower(models.Model):
name = models.CharField(max_length=128)
class GroupTower(models.Model):
tower = models.ManyToManyField('Tower', blank=True)
class User(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField('Tower', through='Dates')
class Dates(models.Model):
user = models.ForeignKey('User', on_delete=models.CASCADE)
tower = models.ForeignKey('GroupTower', on_delete=models.CASCADE)
begin_date = models.DateTimeField()
end_date = models.DateTimeField()
提前致谢。