0
votes

Historique des modèles Django avec le suivi de l'historique des clés étrangères utilisant Django-Simple History

J'ai trois modèles avec des enregistrements historiques: xxx

Je veux garder une trace de l'historique avec des enregistrements d'historique des clés étrangères correspondants. Mais lors de l'accès à l'histoire de WIFIUIUER, j'ai obtenu les dernières valeurs de wifidevice et wifisim. Je veux que l'enregistrement historique de Wifidevice et WiFisim pointe vers cette affaire de leur unique. Quelle est la meilleure méthode à suivre pour cela?


1 commentaires

Utilisez la méthode as_of () fourni par SIMPORTYHISTORY dans vos modèles associés Instances


3 Réponses :


0
votes

Pour garder une trace de l'histoire et ne pas avoir que le dernier spectacle d'objet, je vous suggère d'ajouter un modèle pour l'historique, qui contient le WIFIUIURE WIFIDEVICE et WIFISIM, et peut-être ajouter une date pour la date et l'heure d'accès, Ajout de la date Je vous suggère de regarder cette réponse ( Django Auto maintenant et auto Ajouter maintenant )


2 commentaires

Bonjour, je pense que votre approche peut être la voie à suivre. Mais comment suggérez-vous d'ajouter un modèle à l'histoire avec des clés étrangères? Comme la clé étrangère pointera sur le dernier objet.


Vous allez ajouter à la base de données. Chaque clé étrangère sera donc sauvegardée à leur objet en fonction de l'objet et que de nouvelles clés étrangères ne feront pas que les données perdues, assurez-vous que vous n'avez pas d'attribut unique ensemble, car cela provoquera Erreurs d'intégrité Lorsqu'un utilisateur utilise peut-être plusieurs périphériques.



-2
votes
class BilingualCorpus(models.Model):
    file_url = models.FileField(upload_to='corpus_files/', validators=[FileExtensionValidator(allowed_extensions=['txt', 'csv', 'tmx', 'xlsx'])])
    file_name = models.CharField(max_length=255, default='none')
    name = models.CharField(max_length=50,default='none')
    s_lang = models.CharField(max_length=5,default='en')
    t_lang = models.CharField(max_length=5,default='th')
    note = models.TextField(blank=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    created_at = models.DateTimeField(auto_now_add=True, blank=True)
    updated_at = models.DateTimeField(auto_now=True, blank=True)

class CorpusStatus(models.Model):
    status = models.CharField(max_length=50, default='Unchecked')

class  BilingualSentence(models.Model):
    corpus = models.ForeignKey(BilingualCorpus, on_delete=models.CASCADE)
    source = models.TextField(blank=True)
    target = models.TextField(blank=True)
    status = models.ForeignKey(CorpusStatus, blank=True, null=True, on_delete=models.SET_NULL)

1 commentaires

Pouvez-vous fournir une explication de la manière dont cela résout le problème? Assurez-vous d'utiliser le bouton Modifier pour ajouter l'explication directement à votre réponse, au lieu de le laisser ici dans les commentaires.



0
votes

J'ai vu votre message en mode monté, vous devez remplacer la méthode STR forte> des deux modèles WIFIDEVICE & WIFISIM comme suit:

class WifiDevice(models.Model):
    ....
    history = HistoricalRecords()

    def __str__ (self):
    return self.history // the solution 




class WifiSim(models.Model):
    ....
    history = HistoricalRecords()
    def __str__ (self):
    return self.history // the solution 


0 commentaires