Как вставить и обновить несколько записей в Django - PullRequest
0 голосов
/ 18 февраля 2020

Я хочу знать, как справиться с этой задачей. вот подробности: это модель product_feature

class Feature(models.Model):
    has_value_choice = [
        ('y', 'Yes'),
        ('n', 'No'),
    ]
    feature_id = models.AutoField(primary_key=True)
    feature_name = models.CharField(max_length=255, null = False)
    product_type = models.ForeignKey(Product_type, on_delete=models.SET_NULL, null=True)
    feature_has_value = models.CharField(choices=has_value_choice, max_length = 1, null = False)
    created_at = models.DateTimeField(auto_now_add = True)
    updated_at = models.DateTimeField(auto_now = True)

class Product_feature(models.Model):
    product_feature_id = models.AutoField(primary_key=True)
    feature = models.ForeignKey(Feature, on_delete=models.SET_NULL, null=True)
    product = models.ForeignKey(Product, on_delete=models.SET_NULL, null=True)
    product_feature_value = models.CharField(max_length=255, null = False)
    created_at = models.DateTimeField(auto_now_add = True)
    updated_at = models.DateTimeField(auto_now = True)


здесь, я передаю данные функций в шаблон, чтобы сохранить характеристики указанного продукта c в модели product_feature.

                  <form>
                        <table class="table table-bordered">
                            <thead>
                              <tr>
                                <th>Features</th>
                                <th>Value</th>
                              </tr>
                            </thead>
                            <tbody>
                                {% for data in features_data %}
                                    <tr>
                                        {% if data.feature_has_value != 'n' %}
                                            <td>{{ data.feature_name }}</td>
                                            <td><input type="text" name="{{ data.feature_name }}" id="{{ data.feature_name }}" placeholder="Enter {{ data.feature_name }}" class="form-control" required/></td>
                                        {% else %}
                                            <td>{{ data.feature_name }}</td>
                                            <td>
                                                <select id="{{ data.feature_name }}" name="{{ data.feature_name }}" class="form-control" required>
                                                    <option selected id="select" value="yes">Yes</option>
                                                    <option value="no">No</option>
                                                </select>
                                            </td>
                                        {% endif %}
                                    </tr>        
                                {% endfor %}
                            </tbody>
                          </table>
                       </form>

Теперь дело в том, как вставить эти данные формы в таблицу характеристик продукта (модель product_feature в начале вопроса).

Я хочу вставить несколько записей в У продукта есть таблица, в которой каждая запись имеет значение feature_id, product_id & product_feature.

Я действительно не понимаю, как это сделать. Я новичок в Django разработке.

Ответы [ 2 ]

0 голосов
/ 19 февраля 2020

Я думаю, что вы ищете ModelFormSet характерных форм. Это позволяет дублировать одну форму для нескольких объектов. Документация хорошая на рампе: https://docs.djangoproject.com/en/3.0/topics/forms/formsets/

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

Вы можете использовать администратора django, который по умолчанию добавляет к вашему URL. В моделях регистров admin.py вы можете использовать стандартный пользовательский интерфейс

from django.contrib import admin

 # Register your models here.
 from medicine.models import Address,Shop


 class ShopAdmin(admin.ModelAdmin):
  list_display = ('name', 'phone', 'address')


 class AddressAdmin(admin.ModelAdmin):
  list_display = ('line_1', 'line_2', 'city', 'state', 'lat', 'lng')






 admin.site.register(Shop, ShopAdmin)
 admin.site.register(Address, AddressAdmin)

. / Manage.py для выполнения миграций ./manage.py createuperuser и ваше приложение в изолированных приложениях

Для упрощенного пользовательского интерфейса вам нужна другая форма, которая принимает данные и передает их на поддержку request.body как json

. используя django rest Framework, где вы можете определить свои конечные точки и использовать seriizarers, который дает возможность общаться в json / xml любой поддерживаемый формат

Для вставки данных принимайте все как параметр запроса или тело полезной нагрузки

Для создания объектов в вашей модели используйте

obj = MyModel.objects.create(value)
...