【发布时间】:2021-09-26 03:29:08
【问题描述】:
在我的 Django 模型中,我有一个 def 保存功能。我需要这个函数来查看一个字段是否完全留空。我需要它来查看是否每个条目都将字段留空,然后将某些内容返回到 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(请求): 上下文 = {}
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 %}
谢谢!
【问题讨论】:
-
嗨@RussellHertel。您已经正确定义了
models并在views.py中检索值并使用 Django 模板语言在 HTML 中迭代。只有您的 HTML 中的这一段不正确{% if date1 == 'NONE' %}要更正它,您可以使用{% if post.date1 == 'NONE' %} -
@AhemdAblak 我收到错误“名称'self'未定义”它指的是我的views.py。由于这是我在 HTML 中的 for 循环,因此它不会一次只检查每一个,如果它是空白的,则不返回任何内容。我需要先遍历所有这些字段以查看所有该字段是否为空白,然后如果该字段为空白,则将值返回到我的 HTML。这会这样做吗?我的视图中是否需要一个 for 循环?谢谢
-
嗨@RussellHertel,您已经在
{% for post in Data_Repo1 %}的html 中进行迭代。对于您在views.py中收到的self错误,您可以将if self.date1 is None:替换为if context['Data_Repo1'].data1 is None: -
@AhmedAblak 所以我们真的很亲密。我进行了更改,但现在出现错误“'QuerySet' 对象没有属性'data1'”。另外,我在 if 语句中放入什么来检测每个条目的字段是否为空并返回一个值?
-
嗨@RussellHertel,错误是因为拼写错误
data1应该是date1。在if context['Data_Repo1'].data1 is None:中,对于空字段检测,根据您的模型,它将是一个空白,因此,您可以使用以下内容来验证空字段:if context['Data_Repo1'].data1 == "":我将添加带有示例的答案以进行更多说明。
标签: django django-models field