J'ai trois modèles avec des enregistrements historiques: 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? P> p>
3 Réponses :
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 ) P>
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.
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)
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.
J'ai vu votre message en mode monté, vous devez remplacer la méthode
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
Utilisez la méthode
as_of () Code> fourni par SIMPORTYHISTORY dans vos modèles associés Instances