"def save" - Определите, если поле полностью пустое - Django

В моих моделях Django у меня есть функция def save. Мне нужно, чтобы эта функция проверяла, оставлено ли поле пустым полностью. Мне нужно, чтобы она видела, оставалось ли поле пустым при каждой записи, а затем возвращала что-то в HTML файл. Я приложу свой код ниже, но я действительно в тупике. Я не уверен, как я могу установить значение в этой функции и получить его в HTML. Есть ли более простой способ?

models.py

class Data_Repo1(models.Model):
    user = models.ForeignKey(User, default=True, related_name="Data_Repo1", on_delete=models.PROTECT)
    date1 = models.DateField(blank=True, null=True)
    date2 = models.DateField(blank=True, null=True)

    class Meta:
        ordering = ['-pk']

    def __str__(self):
        return self.date1 or 'None'

    def get_absolute_url(self):
        return reverse('repo1')

    def save(self, *args, **kwargs):
        if self.date1 is None:
            #Something Here - "self.date1 = NONE"
        else:
            return
        if self.date2 is None:
            #Something Here - "self.date2 = NONE"
        else:
            return

        super().save(*args, **kwargs)  # Call the "real" save() method.

views.py

def repo1(request): context = {}

context['Add_Repo'] = Add_Repo.objects.filter(user=request.user)
context['Data_Repo1'] = Data_Repo1.objects.filter(user=request.user)
context['Field_Repo1'] = Field_Repo1.objects.filter(user=request.user)

if self.date1 is None: #NOT WORKING
    print('TEST') #NOT WORKING

return render(request, 'sheets/list_repo/repo1.html', context)

HTML

{% for post in Data_Repo1 %}
        {% if date1 == 'NONE' %}
            <h1>ITS HERE</h1>
        {% endif %}
        <tr>
            <td><div><a href="{% url 'update_extinguisher' pk=post.pk %}" style="color: black;">{% if post.date1 %}{{ post.date1 }}{%else%}<span style="color: transparent;">None</span>{%endif%}</a></div></td>
            <td><div><a href="{% url 'update_extinguisher' pk=post.pk %}" style="color: black;">{% if post.date2 %}{{ post.date2 }}{%else%}<span style="color: transparent;">None</span>{%endif%}</a></div></td>
        </tr>
    {% endfor %}

Спасибо!

Вы должны добавить валидацию в view.py, а не в модели. Например,

def repo1(request): 
    context = {}
    if request.POST:

    # Get your submitted values and store it in model
        if request.POST.get('post1'):
        .....
        if request.POST.get('post2'):
        .....
    return render(request, 'sheets/list_repo/repo1.html', context)

    else:
        context['Add_Repo'] = Add_Repo.objects.filter(user=request.user)
        context['Data_Repo1'] = Data_Repo1.objects.filter(user=request.user)
        context['Field_Repo1'] = Field_Repo1.objects.filter(user=request.user)
        if self.date1 is None: #NOT WORKING
        print('TEST') #NOT WORKING
    return render(request, 'sheets/list_repo/repo1.html', context)

Пожалуйста, внесите следующие незначительные изменения в ваш код для проверки пустых дат и итерации по списку репозиториев:

context['Add_Repo'] = Add_Repo.objects.filter(user=request.user)
context['Data_Repo1'] = Data_Repo1.objects.filter(user=request.user)
context['Field_Repo1'] = Field_Repo1.objects.filter(user=request.user)
for repo in context['Data_Repo1']:
    if repo.date1 == "" and repo.date2 == "":
        print("Repo: {} has empty date1 and date2".format(repo.pk))
        continue
    if repo.date1 == "":
        print("Repo: {} has empty date1".format(repo.pk))
        continue
    if repo.date2 == "":
        print("Repo: {} has empty date2".format(repo.pk))

return render(request, 'sheets/list_repo/repo1.html', context)
Вернуться на верх