Как создать встроенный набор форм с множеством отношений в Django - PullRequest
0 голосов
/ 20 ноября 2018

Я хочу создать встроенный набор форм между Предзаказ модель и Продукт модель.Сценарий заключается в том, что пользователь сможет выбрать один или несколько продуктов, когда он решит создать предварительный заказ.С другой стороны, продукт может быть найден в одном или нескольких предварительных заказах.Имея это в виду, я создал множество отношений.

models.py

class Preorder(models.Model):

    client = models.ForeignKey(Client,verbose_name=u'Client')
    invoice_date = models.DateField("Invoice date",null=True, blank=True, default=datetime.date.today)
    preorder_has_products = models.ManyToManyField(Product, blank=True)

    def get_absolute_url(self):
        return reverse('preorder_edit', kwargs={'pk': self.pk})


class Product(models.Model):

    name = models.CharField("Name",max_length=200)
    price = models.DecimalField("Price", max_digits=7, decimal_places=2, default=0)
    barcode = models.CharField(max_length=16, blank=True, default="")
    eopyy = models.CharField("Code eoppy",max_length=10, blank=True, default="")
    fpa = models.ForeignKey(FPA, null=True, blank=True, verbose_name=u'Fpa Scale')

forms.py

class PreorderForm(ModelForm):

    class Meta:
        model = Preorder
        exclude = ('client','preorder_has_products',)

    def __init__(self, *args, **kwargs):
        super(PreorderForm, self).__init__(*args,**kwargs)
        self.fields['invoice_date'].widget = MyDateInput(attrs={'class':'date'})

class ProductForm(ModelForm):
    #name = ModelChoiceField(required=True,queryset=Product.objects.all(),widget=autocomplete.ModelSelect2(url='name-autocomplete'))
    class Meta:
        model=Product
        fields = '__all__'

    def __init__(self, *args, **kwargs):
        super(ProductForm, self).__init__(*args, **kwargs)
        self.fields['name'].label="Name"
        self.fields['price'].label="Price"

и, наконец, встроенный набор форм:

PreorderProductFormSet = inlineformset_factory(Preorder, Product,
                                             form=ProductForm, extra=1)

После запуска я сталкиваюсь с проблемой: ValueError в / 'intranet.Product' не имеет ForeignKey для 'intranet.Preorder'

Почему это происходит с тех пор, как я создал множествоотношение?

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

Есть предложения?

...