Несколько моделей inlineformset Django - PullRequest
0 голосов
/ 05 июля 2019

Я создаю веб-сайт для ввода цен на разные продукты. Места для различных продуктов (ресторан, супермаркет, аптека)

Пользователь может ввести несколько мест для продуктов.Продуктовое место (например, рестораны) может иметь много меню

Итак, у меня есть три модели: 1. Первая - это «ProductPlace», которая имеет в качестве ForeignKey модель пользователя веб-сайта («Пользователь»)

Вторым является «Продукт», который имеет в качестве иностранного ключа модель «ProductPlace» Третьим является «Меню» (как меню ресторана), в котором также в качестве иностранного ключа используется модель «ProductPlace»

Я создал наборы форм, связанные с этими тремя моделями, в файле "forms.py".Но я не знаю, как это сделать для "views.py"

#models.py

from django.db import models
from django.core.validators import FileExtensionValidator
from .validators import validate_file_extension
from django.contrib.auth import get_user_model

User = get_user_model()

# Create your models here.
class ProductPlace(models.Model):
    name = models.CharField(max_length=50)
    num_road = models.IntegerField(blank=False, null=False)
    name_road = models.CharField(max_length=50)
    postal_code = models.IntegerField(blank=False, null=False)
    city =  models.CharField(max_length=50)
    country =  models.CharField(max_length=50)
    acquired_by = models.ForeignKey(User, related_name="product_places", 
                            null=True, on_delete=models.SET_NULL)

    def __str__(self):
        return self.name

class Product(models.Model):
    name = models.CharField(max_length=50)
    price = models.IntegerField(blank=False, null=False)
    place = models.ForeignKey(ProductPlace,related_name="products", on_delete=models.CASCADE)
    class Meta:
        ordering = ('name',)
    def __str__(self):
        return self.name

class Menu(models.Model):
    name = models.CharField(max_length=50)
    price = models.IntegerField(blank=False, null=False)
    place = models.ForeignKey(ProductPlace, related_name="menus", on_delete=models.CASCADE)
    class Meta:
        ordering = ('name',)
    def __str__(self):
        return self.name


#forms.py

from django import forms
from .models import *
from django.forms.models import inlineformset_factory, modelformset_factory
from django.contrib.auth import get_user_model

User = get_user_model()

ProductPlaceFormSet = inlineformset_factory(
    User, ProductPlace, fields=['name', 'num_road', 'name_road', 'postal_code', 'city', 'country'], 
    extra=1, can_delete=True
)       


ProductFormSet = inlineformset_factory(
    ProductPlace, Product, fields=['name', 'price'], 
    extra=1, can_delete=True
)       

MenuFormSet = inlineformset_factory(
    ProductPlace, Menu, fields=['name', 'price'], 
    extra=1, can_delete=True
)       

Я хотел бы получить представление формы с кнопкой добавления и кнопкой удаления для места продукта, продукта и меню

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...