Как переместить строки отфильтрованных данных из таблицы в другую, используя модель - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть два класса моделей A и B, и я хочу переместить строки сом из таблицы A в B, интересно, как это сделать правильно.

models.py

from django.db import models

class Category(models.Model):
    name = models.CharField(max_length=200)

class A(models.Model):
    title = models.CharField(max_length=200)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)

class B(models.Model):
     title = models.CharField(max_length=200)
     category = models.ForeignKey(Category, on_delete=models.CASCADE)

Код views.py

from models import A, B

def move(request):
    filtered_a = A.objects.filter(category=2)
    """
    Here I want to move filtered_a rows to B table,
    and how to deal with the id 
    """

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

Заранее спасибо.

1 Ответ

0 голосов
/ 06 марта 2019
def move(request):
    filtered_a = A.objects.filter(category=2)
    filtered_b = [B(**a) for a in filtered_a]
    B.objects.bulk_create(filtered_b)

это должно сработать.Если ваш набор запросов будет огромным, я бы предложил использовать итератор при циклическом просмотре.

[B(**a) for a in filtered_a.iterator()]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...