Django: Автосохранение разных дат по умолчанию для разных вхождений одной и той же формы? - PullRequest
1 голос
/ 01 августа 2020

Создание приложения Django, в котором для каждого дня недели необходимо вводить данные о весе и калориях ie и сохранять их до соответствующей даты.

В настоящее время я разработал его так, чтобы шаблон отображает Пн, Вт, Ср и др. c. с формой для каждого дня, подключенной к одному и тому же режиму через модельную форму. Моя проблема в том, что с auto_now, auto_now_add и default=today.date() дата фиксирована. То есть - если понедельник - 1-е число месяца, я бы хотел, чтобы, когда пользователь вводит свой вес и калории во вторник, он автоматически сохранялся до 2-го числа месяца. Вот мой код:

Шаблон:

     <form method='POST'> {% csrf_token %}
     {{ mainform.as_p }}
     <input type="submit" value="save" />
     </form>
     Tuesday
     <form method='POST'> {% csrf_token %}
     {{ mainform.as_p }}
     <input type="submit" value="save" />

Форма:

    class Meta:
        model = Daily_Inputs
        fields = [
            "Daily_Weight",
            "Daily_Cals",
            "Daily_Date",
        ]

Просмотр:

    initinputz = Initial_Inputs.objects.filter(user=request.user)
    mainform = Daily_Inputs_Form()
    if request.method == 'POST':
        mainform = Daily_Inputs_Form(request.POST)
        if mainform.is_valid():
            maininstance = mainform.save(commit=False)
            maininstance.user = request.user
            maininstance.save()
 
    context = {
        'initz': initinputz,
        'mainform': mainform,
    }

    return render(request, "pages/home.html", context)

Модель:

    Daily_Weight = models.DecimalField(max_digits=4, decimal_places=2, verbose_name=None, null=True)
    Daily_Cals = models.IntegerField(verbose_name=None, null=True)
    Daily_Date = models.DateField(default=date.today())
    user = models.ForeignKey(User,on_delete=models.CASCADE,default=None, null=True)

Заранее благодарим за любые предложения.

1 Ответ

0 голосов
/ 01 августа 2020

Вы должны проверить наличие скрытого поля. Таким образом, вы бы удалили автоматическую дату из модели.

Затем вручную добавьте поле ввода, которое скрыто и где вы присвоили дату значению.

<input type="hidden" value="{{week_date}}">

Тогда вам понадобятся некоторые python код для получения всех дат текущей недели.

...