Я пытаюсь сохранить данные в django с полями ManyToMany через django - bootstrap -modal-forms для модальных форм, но безуспешно. Я пытался переопределить метод сохранения, но kwargs['instance']
всегда возвращает пустой диктант поля ManyToMany ('suppliers'
):
{'name': 'product_1', 'all_suppliers': <QuerySet []>, 'suppliers': <QuerySet []>}
Я пытаюсь добиться обновления suppliers
для product
и / или обновление products
из supplier
Абсолютно новый для Django, поэтому, пожалуйста, извините за плохой стиль программирования
Не могли бы вы помочь мне. Спасибо!
Вот мой код:
models.py
# models.py
class Product(models.Model):
name = models.CharField(unique=True, max_length=100)
active = models.BooleanField(default=True)
def __str__(self):
return self.name
class Supplier(models.Model):
name = models.CharField(unique=True, max_length=100)
supplier_products = models.ManyToManyField(Product)
def __str__(self):
return self.name
views.py
# views.py
class ProductUpdateView(BSModalUpdateView):
model = Product
template_name = 'product/product_update.html'
form_class = ProductForm
success_url = reverse_lazy('product_list_view')
class SupplierUpdateView(BSModalUpdateView):
model = Supplier
template_name = 'product/supplier_update.html'
form_class = ProductForm
success_url = reverse_lazy('supplier_list_view')
forms.py
# forms.py
class ProductForm(BSModalForm):
all_suppliers = forms.ModelMultipleChoiceField(queryset=Supplier.objects.all(),required=False)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if kwargs.get('instance'):
suppliers = kwargs['instance'].supplier_set.all()
print(type(kwargs['instance']))
self.fields['suppliers'] = forms.ModelMultipleChoiceField(required=False, queryset=suppliers)
class Meta:
model = Product
fields = ['name', 'notes']
fields.append('all_suppliers')