Один ко многим и модели - PullRequest
0 голосов
/ 09 марта 2020

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

, поэтому у меня есть Пользователь >> Заказ >> Multi Items вопросы:

1) лучшая практика здесь просто использовать ForeignKey? код моей модели:

from django.db import models


class Customer(models.Model):
    name = models.CharField(max_length=200, null=True)
    phone = models.CharField(max_length=200, null=True)
    email = models.CharField(max_length=200, null=True)
    date_created = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.name

    def date_createdview(self):
        return self.date_created.strftime('%B %d %Y')


class Product(models.Model):
    CATEGORY = (
        ('General', 'General'),
        ('SmartHome', 'SmartHome'),
        ('Software', 'Software'),
        ('Mobile', 'Mobile'),

    )
    name = models.CharField(verbose_name='שם', max_length=200, null=True)
    price = models.FloatField(verbose_name='מחיר', null=True)
    category = models.CharField(max_length=200, null=True, choices=CATEGORY, verbose_name='קטגוריה')
    description = models.CharField(max_length=200, null=True, verbose_name='מלל חופשי')
    date_created = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.name


class Order(models.Model):
    STATUS = (
        ('New', 'New'),
        ('Work in progress', 'Work in progress'),
        ('completed', 'completed'),
    )
    customer = models.ForeignKey(Customer, null=True, on_delete=models.CASCADE)
    date_created = models.DateTimeField(auto_now_add=True, null=True)
    status = models.CharField(max_length=200, null=True, choices=STATUS)



    def date_createdview(self):
        return self.date_created.strftime('%d/%m/%Y')


class OrderItem(models.Model):
    product = models.ForeignKey(Product, null=True, on_delete=models.CASCADE)
    order = models.ForeignKey(Order, null=True, on_delete=models.CASCADE)
    quantity = models.IntegerField(null=True)

2) как мне строить свои виды или формы? я хочу сделать это динамически c, когда я ввожу заказ, я могу вставить элементы и увидеть, как новый элемент добавляется в список элементов в заказе. Как сохранить номер заказа и добавить новые элементы?

это мой вид продукта, он работает. Я могу добавлять новые продукты.

@login_required(login_url="login")

    def products(request):
        form = ProductForm(request.POST or None)
        if form.is_valid():
            form.save()
        products = Product.objects.all()
        context = {'form': form, 'products': products}
        return render(request, 'accounts/products.html', context)

надеюсь, вы можете направить меня в нужное место. спасибо!

1 Ответ

0 голосов
/ 14 марта 2020
    if form.is_valid():
        order = get_object_or_404(Order, id=id)
        instance = form.save(commit=False)
        instance.order=order
        instance.save()

просто нужно сделать: commit = False и затем связать ордер.

...