У меня есть такая модель (я буду вставлять только соответствующие данные):
class Chart(BaseModel):
name = models.CharField(max_length=255, null=False, blank=False)
order = models.PositiveSmallIntegerField(blank=False, null=False, default=0)
data_type = models.CharField(max_length=3, null=False, blank=False)
# one data_type will be repeated in many instances of the model
class Meta:
unique_together = (('order', 'data_type'), )
Когда у меня несколько диаграмм с определенным data_type
, попытка изменить их порядок вручную становится большойтрата времени, поэтому я решил использовать модельный набор, позволяющий пользователю изменять только order
.Однако когда я сохраняю набор форм модели, возникает исключение, так как ограничение unique_together
нарушается.
Вот набор форм, который я использую:
class ChartOrderForm(forms.ModelForm):
name = forms.CharField(disabled=True)
class Meta:
model = Chart
fields = ['name', 'order']
ChartOrderFormSet = forms.modelformset_factory(
Chart,
form=ChartOrderForm,
extra=0,
)
А вот метод, который я использую для их сохранения:
@login_required
def charts_reorder(request):
if request.method == 'POST':
formset = ChartOrderFormSet(request.POST)
if formset.is_valid():
formset.save()
Есть ли способ сохранить их безНарушение ограничения, которое не изменяет заказы несколько раз, или удаление всех экземпляров из БД и повторное создание их с другим порядком?