Ich habe ein Szenario, in dem ich die Daten von einem Modell (altes Modell, wo einige Daten bereits vorhanden sind) zu einem anderen Modell und wiederum zu einem anderen Modell wenn notwendig verschieben kann Ich füge diesen Prozess in der Migrationsdatei so hinzu, dass ich die Anforderung mit nur python manage.py migrate
Befehl erreichen kann.Wie kann ich Migrationen verwenden, um Daten zu verschieben?
das ist das Modell, in dem alle alten Elemente vorhanden sind:
class UserFavorite(CreatedAtMixin):
user = models.ForeignKey('auth.User')
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
objects = UserFavoriteManager()
def __str__(self):
try:
return str(self.content_object)
except AttributeError:
return 'None'
class Meta:
get_latest_by = "date_added"
unique_together = ("user", "content_type", "object_id")`
Hier ist das Modell, wo ich brauche Element eingefügt werden zunächst pro Artikel in oben Modell:
class CollectionItem(models.Model):
sort_number=models.PositiveIntegerField(blank=True,null=True)
type=models.CharField(max_length=20,null=False, blank=False)
item_type = models.ForeignKey(ContentType, limit_choices_to=models.Q(app_label='news', model='News') | models.Q(app_label='work', model='Work') | models.Q(app_label='collection', model='Quote'))
item_id = models.PositiveIntegerField()
item = generic.GenericForeignKey('item_type', 'item_id')
class Meta:
verbose_name = "Collection Item"
verbose_name_plural = "Collection Items"
def __str__(self):
return self.item.title
dann brauche ich Einfügen in:
class Collections(CreatedAtMixin):
user = models.ForeignKey('auth.User', related_name='collections_user')
collection_place=models.ForeignKey('companies.CompanyOffice',related_name='collections_place',null=True)
collection_name = models.CharField(max_length=40,null=False, blank=False)
description = models.TextField(null=True, blank=True)
items=models.ManyToManyField('collection.CollectionItem')
def __str__(self):
return self.collection_name
class Meta:
unique_together = ("user","collection_name")
verbose_name = "Collection"
verbose_name_plural = "Collections"
ordering = [ '-created_at']
get_latest_by = "created_at"