Здравствуйте!
есть код:
class ProductCategory(models.Model):
product = models.ForeignKey(Product, verbose_name='Товар')
category = models.ForeignKey(Category, verbose_name='Категория')
main = models.BooleanField(default=False)
def save(self, *args, **kwargs):
if self.main:
try:
temp = ProductCategory.objects.get(main=True)
if self != temp:
temp.main = False
temp.save()
except ProductCategory.DoesNotExist:
pass
super(ProductCategory, self).save(*args, **kwargs)
он проверяет чтобы в связи была только 1 запись с main=True
Ошибка ModelName.DoesNotExist обрабатывается корректно.
А есть код:
def get_absolute_url(self):
try:
main_cat = self.category.get(productcategory__main=True)
except ObjectDoesNotExist:
main_cat = self.category.all()[0]
category_ancestor_slug_list = [ancestor.slug for ancestor in main_cat.get_ancestors()]
ancestor_path = ''
if category_ancestor_slug_list:
ancestor_path = '/'.join(category_ancestor_slug_list) + '/'
return reverse('in_catalog', args=[ancestor_path + main_cat.slug + '/' + self.slug])
Где я пытаюсь выбрать главную категорию, или первую из списка.
Так вот тут ModelName.DoesNotExist не работает.
Пришлось использовать ObjectDoesNotExist
Почему так?