Как вы клонируете модель и ее зависимости в Django 2.2? - PullRequest
0 голосов
/ 23 сентября 2019

Как мне клонировать модель таким образом, чтобы она включала (клонировала) данные о моделях, связанных с FK?Я просмотрел различные связанные вопросы по стеку и обнаружил, что большинство из них относятся к старым / устаревшим версиям Django.Вот некоторый иллюстративный код модели (для краткости опущены str методы и т. Д.):

class Tracking(models.Model):
    entry        = models.CharField(blank=False, max_length=50)
    timestamp    = models.DateTimeField(null=True, auto_now_add=True)
    active       = models.BooleanField(default=False)

class Author(models.Model):
    entry       = models.ForeignKey(Tracking, on_delete=models.CASCADE)
    first_name  = models.CharField(blank=False, max_length=50)
    last_name   = models.ImageField(null=True, blank=True)

class Scene(models.Model):
    entry       = models.ForeignKey(Tracking, on_delete=models.CASCADE)
    location    = models.CharField(blank=False, max_length=50)
    image       = models.ImageField(null=True, blank=True)

Мой желаемый результат - клонирование существующей «записи» в модели отслеживания, такой, чтоновая «запись» в новой строке создается с собственным PK, а также клонированными копиями данных «Author» и «Scene» в соответствующих таблицах, которые также указывают на новую клонированную «запись».Любые указатели в правильном направлении будут полезны.Я ничего не нахожу в документации Django.

1 Ответ

0 голосов
/ 24 сентября 2019

Ответ, как выясняется, является функцией, написанной Стивеном Г. Тагги, , как показано в этом сообщении.

Я смог изменить этот код для своих целей и запуститьэто успешно в оболочке.Это крутоБольшое спасибо Стивену за это.Функция has_key () устарела и должна быть заменена на «in», как в «if field.name in» и т. Д. В остальном все хорошо, как в Python 3.7 / Django 2.2.

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