Могу ли я использовать один и тот же внешний ключ более одного раза? - PullRequest
0 голосов
/ 21 января 2019

У меня есть таблица клиентов и таблица событий. Клиент - это FK в таблице событий. Пользователь будет выбирать, на каком клиенте он находится в определенный день. Я хочу, чтобы в моей таблице событий были поля Sunday, Monday, ....., Saturday, поэтому пользователю просто нужно выбрать клиента из выпадающего списка.

Я пытался настроить свои модели, как это, но это не сработало при попытке миграции:

class Client(models.Model):
    name = models.CharField(max_length=50)

class Event(models.Model):
    week = models.DateField(blank=False)
    sunday = models.ForeignKey(Client, on_delete=models.CASCADE)
    monday = models.ForeignKey(Client, on_delete=models.CASCADE)
    tuesday = models.ForeignKey(Client, on_delete=models.CASCADE)
    wednesday = models.ForeignKey(Client, on_delete=models.CASCADE)
    thursday = models.ForeignKey(Client, on_delete=models.CASCADE)
    friday= models.ForeignKey(Client, on_delete=models.CASCADE)
    saturday = models.ForeignKey(Client, on_delete=models.CASCADE)

Я знаю, как разрешить выбор в качестве примера:

position = models.CharField(max_length=20, choices=POS_CHOICES)

Но я хочу использовать варианты из моей таблицы "клиент" вместо жесткого выбора вариантов.

1 Ответ

0 голосов
/ 21 января 2019

Нужно просто использовать «related_name»:

class Event(models.Model):
week = models.DateField(blank=False)
sunday = models.ForeignKey(Client, on_delete=models.CASCADE, related_name='sunday', null=True)
monday = models.ForeignKey(Client, on_delete=models.CASCADE, related_name='monday', default=0)
tuesday = models.ForeignKey(Client, on_delete=models.CASCADE, related_name='tuesday', default=0)
wednesday = models.ForeignKey(Client, on_delete=models.CASCADE, related_name='wednesday', default=0)
thursday = models.ForeignKey(Client, on_delete=models.CASCADE, related_name='thursday', default=0)
friday = models.ForeignKey(Client, on_delete=models.CASCADE, related_name='friday', default=0)
saturday = models.ForeignKey(Client, on_delete=models.CASCADE, related_name='saturday', null=True)
...