Каков рекомендуемый способ обновления каждого экземпляра исходной модели при создании нового целевого экземпляра во многих моделях? - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть веб-сайт, на котором я хочу отобразить базовую HTML-таблицу следующим образом:

Product_Name | Attribute_1 | Attribute_2
----------------------------------------- 
Soap         | True        | True 
Shampoo      | False       | True

Итак, я создал классы Product и Attribute с отношением ManyToMany.

Models.py

class Product(models.Model):
    name = models.CharField(max_length=10)
    attributes = models.ManyToManyField(on_delete='CASCADE')

class Attribute(models.Model):
    name = models.CharField(max_length=1, default='N')

Итак, у меня есть два экземпляра Атрибута - Атрибут_1 и Атрибут_2.

Когда я создаю новый атрибут (Атрибут_3), есть лиКак я могу обновить отношения всех моих экземпляров Product со ссылкой на новый атрибут?

Я знаю, что Django создает сквозную таблицу для отношений m2m.В соответствии с документами я знаю, что могу сделать что-то вроде:

for prod_obj in Product.objects.all(): prod_obj.add(new_attribute_object)

Но как я могу гарантировать, что это происходит автоматически / последовательно каждый раз, когда я создаю атрибутобъект

1 Ответ

0 голосов
/ 18 февраля 2019

Вы должны написать собственный метод save для вашей модели Attribute, который a) проверяет, создается ли объект Attribute впервые;и б) если это так, добавляет это Attribute к каждому Product в вашей базе данных.Для получения дополнительной информации о написании пользовательского метода save см. этот пост .

...