Как лучше обрабатывать определенные исключения CRUD в Django - PullRequest
0 голосов
/ 14 марта 2020

У меня есть эти модели.

class Brand(models.Model):
    account = models.ForeignKey(Account, on_delete=models.CASCADE, null=False)
    name = models.CharField(max_length=100, null=False, blank=False)


class Ingredient(models.Model):
    account = models.ForeignKey(Account, on_delete=models.CASCADE, null=False)
    brand = models.ForeignKey(Brand, on_delete=models.CASCADE, null=False)
    name = models.CharField(max_length=100, null=False, blank=False)
    cost = models.DecimalField(max_digits=14, decimal_places=2, null=False)

    class Meta:
        unique_together = ['account', 'brand', 'name']

Так что иногда название одного и того же бренда и учетной записи может повторяться. Должен ли я обрабатывать эти исключения ограничений в представлениях, в формах? Какой самый чистый способ сделать это? Django действительно универсален, и вы можете делать вещи разными способами.

1 Ответ

0 голосов
/ 14 марта 2020

Для чистого пути создайте форму как ModelForm . ModelForm поддерживает обработку уникальности поля модели. См. https://docs.djangoproject.com/en/3.0/topics/forms/modelforms/#overriding -the-clean-метод

В случае использования Form класса обработайте исключение уникальности с помощью функции clean ().

...