Как автоматически инициализировать поля в модели Django? - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть следующая модель в Django, и в основном мне нужно автоматически инициализировать 3 из 5 полей после того, как пользователь вставил некоторые данные, например,

Models.py

class Assignment(models.Model):
    assignment       = models.CharField(max_length=60)
    comments         = models.CharField(max_length=60)
    starting_date    = models.DateField()
    points           = models.IntegerField()
    STATUS = (('A', 'Active'), ('C', 'Cancelled'), ('D', 'Done'))
    status           = models.CharField(max_length=1, choices=STATUS)

Forms.py

from django import forms
from .models import Task

class TaskForm(forms.ModelForm):
    class Meta:
        model = Task
        starting_date = datetime.now()
        fields = ['task_description', 'task_comments', 'starting_date', 'priority', 'points']

Форма ввода

<!-- Input form to request to values-->
<div class="panel-heading">Add a new assignment </div>
  <form id ="insert_new_assign" class="form-horizontal" method="POST">
    {% csrf_token %}
    <div class="panel-body">
      <div class="input-group">
        <input class="form-control" name="insert_new_assign_field" type="text" placeholder="Insert your new assignment here" />
        <input class="form-control" name="insert_new_comment_field" type="text" placeholder="Any comment you want to add?" />
        <button class="btn btn-primary" type="submit">Add</button>
      </div>
    </div>
  </form>
</div>

См. JS Fiddle длякраткий справочник

Обычно, когда пользователь вводит новое назначение и комментарий, Я хочу, чтобы Django сохранил эти два поля и автоматически инициализировал другие поля с текущим временем, 0 точками и статусом A .Всякий раз, когда я пытаюсь сохранить новую запись, я получаю сообщение об ошибке The view engine.views.home didn't return an HttpResponse object, что является нормальным явлением, поскольку Django ожидает от пользователя заполнения всех полей, а не только двух.

Предыдущее исследование

Основываясь на некоторых исследованиях, я обнаружил, что только одно поле может быть заполнено в модели Джанго - идентификатор - нов то же время они упоминают Custom Managers - классы, которые могут решить мою проблему, однако примеры, которые они предоставляют, не подходят для моей текущей ситуации .

Мой главный вопрос:

Как мне указать в Django сохранить два поля и автоматически инициализировать другие поля с текущей датой и временем, 0 точками иСтатус?

Любая помощь в этом вопросе будет принята с благодарностью, не стесняйтесь улучшить этот вопрос.

1 Ответ

0 голосов
/ 22 ноября 2018

После некоторых предложений, сделанных Бидханом, я смог получить следующий код, чтобы обойти проблему.

from django.utils import timezone

class Assignment(models.Model):
    STATUS = (
        ('A', 'Active'),
        ('C', 'Cancelled'),
        ('D', 'Done')
    )

    assignment       = models.CharField(max_length=60)
    comments         = models.CharField(max_length=60)
    starting_date    = models.DateField(default=timezone.now())
    points           = models.IntegerField(default=0)
    status           = models.CharField(max_length=1, choices=STATUS, default='A')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...