У меня есть простое приложение Django, где пользователи могут общаться с разными институтами, заключая с ними контракты. Пользователь может работать для каждого института (у него есть контракт), и часы их рабочего времени.Django обновляет две записи одной промежуточной модели
Теперь я хочу, чтобы пользователь определял контракт по умолчанию, который будет выбран, когда ничего не указано (тогда будет назначено рабочее время с тактовой частотой). Это можно сделать с помощью следующей модели:
class Contract(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
institute = models.ForeignKey(Institute, on_delete=models.CASCADE)
work_hours = models.DecimalField(max_digits=4, decimal_places=1)
default = models.BooleanField(default=False)
class Meta:
# We want each employee to only have one contract per institute.
unique_together = ('user', 'institute',)
Мой вопрос: Как я могу ограничить пользователю только один контракт по умолчанию? Если у меня есть два разных контракта, контракт А является текущим дефолтом, а затем я меняю контракт Б на значение по умолчанию, я хочу, чтобы значение для контракта А стало ложным.
Я не уверен, что это проблема, с которой я должен работать внутри модели или внутри ModelForm. Если вы используете последний, я не уверен, как создать форму со всеми возможными пользовательскими контрактами и выбором радио, который изменяет значение по умолчанию для двух записей (установка значения по умолчанию по умолчанию - False и установка нового значения по умолчанию - Правда). Или я должен изменить его на совершенно другую логику модели?
Я думаю, что лучшим решением является сделать это внутри ModelForm, потому что вы не можете увидеть, как определить в модели это правило. –