जब कोई विशिष्ट उपयोगकर्ता मौजूदा डेटा को अपडेट किए बिना फॉर्म जमा करता है तो क्या सटीक तारीख को सहेजना संभव होगा? तो मूल रूप से मेरे पास हर तारीख होगी जब कोई उपयोगकर्ता फॉर्म जमा करेगा। मैं ग्राफ के लिए इन तिथियों का उपयोग करना चाहता हूं। जब मैं फॉर्म जमा करता हूं तो यह वजन, ऊंचाई और लक्ष्य जैसे उपयोगकर्ता के डेटा को अपडेट करता है। यह ठीक काम करता है, लेकिन मैं "2020.09.12" जैसे सबमिशन दिनों को सहेजने में सक्षम होना चाहता हूं। और यदि उपयोगकर्ता अपना डेटा बदलने के लिए फिर से फॉर्म जमा करता है तो तारीख में "2020.09.12" + नई तारीख होनी चाहिए।

मैं जो हासिल करना चाहता हूं वह यह है: यदि कोई विशिष्ट उपयोगकर्ता काम करने के लिए 5 तिथियों की तुलना में 5 बार उदाहरण के लिए फॉर्म जमा करता है।

अपडेट करें

Model.py

from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
from datetime import date
# Create your models here.
class Profile(models.Model):
      user = models.ForeignKey(User, on_delete=models.CASCADE, 
related_name='user_profile')
weight = models.FloatField(max_length=20, blank=True, null=True)
height = models.FloatField(max_length=20, blank=True, null=True)
goal = models.FloatField(max_length=20, blank=True, null=True)
created_at = models.DateField(auto_now_add=True)

def __str__(self):
    return self.user.username

@receiver(post_save, sender=User)
 def save_user_profile(sender, instance, created, **kwargs):
  if created:
    Profile.objects.create(user=instance)
  #else:
  # instance.user_profile.save() #UPDATE

दृश्य

def get_data(request, *args,**kwargs):
data = {
    'weight': request.user.user_profile.weight,
    'goal': request.user.user_profile.goal,
    'date': request.user.user_profile.created_at,
}

return JsonResponse(data)

ajax

var endpoint = '/api/data';
var defaultDataW = [];
var defaultDataG = [];
var dates = [];

$.ajax({
    method: 'GET',
    url: endpoint,
    success: function(data){
        console.log(data.weight);
        console.log(data.goal);
        console.log(data.date);
 },
 error: function(error_data){
        console.log("Error");
        console.log(error_data);
    }
})
})
1
Dániel Mozsár 21 सितंबर 2020, 23:27

1 उत्तर

सबसे बढ़िया उत्तर

ऐतिहासिक डेटा को सहेजने के लिए एक मॉडल बनाएं। यह उपयोगकर्ता के लिए ForeignKey के माध्यम से बाध्य होगा, और वहां तिथि के लिए एक अतिरिक्त कॉलम जोड़ देगा। auto_now_add पैरामीटर का उपयोग करें बचत के दौरान स्वचालित रूप से वर्तमान तिथि निर्धारित करने के लिए।

class UserData(models.Model):
    user = models.ForeignKey(UserModel)
    weight = models.IntegerField(...)
    # other columns to store
    # the following column has information when the data was created
    created_at = models.DateField(..., auto_now_add=True)

जब आप डेटा प्रदर्शित करना चाहते हैं, तो नवीनतम तिथि के साथ रिकॉर्ड लोड करें।

1
yedpodtrzitko 22 सितंबर 2020, 07:14