У меня есть 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 говорит, что мне нужно использовать forgeignkey для классов Tower и User.
Есть ли какое-нибудь решение для этого? Применить напрямую поле «многие ко многим» в промежуточной таблице? Или я должен создать новый класс, своего рода 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()
Заранее спасибо.