django - 将 OneToOne 关系传递给 Django 模板
问题描述
我正在尝试在 Django 中设置 OneToOne 关系,以便显示来自TableA
特定TableB
记录的数据。
我在弄清楚如何在我的视图中显示它时遇到问题,那里有例子,但有些似乎有点过时或有我不熟悉的解决方案。
我在视图文件和模板文件中尝试了一些不同的调用,但没有任何运气,任何输入都将不胜感激!
我的模型.py
from django.db import models
# Create your models here.
class tableA(models.Model):
created = models.DateTimeField(default=None)
published = models.CharField(max_length=50, default=None)
publisher = models.CharField(max_length=50, default=None)
code = models.CharField(max_length=25, null=True, unique=True)
class Meta:
db_table = 'tableA'
unique_together = (("publisher", "published"),)
def __str__(self):
return self.created
class tableB(models.Model):
tableA = models.OneToOneField(tableA, on_delete=models.CASCADE, primary_key=True, default=None)
code = models.CharField(max_length=50, default=None, null=True)
url = models.CharField(max_length=100, default=None, null=True)
class Meta:
managed = True
def __str__(self):
return self.tableA.code
我的观点.py
def nani(request):
data = TableA.objects.all()
return render(request, 'site/home.html', {'data':data})
我的模板
{% for test in data %}
<tr>
<td>{{ test.published }}</td>
<td>{{ test.publisher }}</td>
<td>{{ test.TableB.url }}</td>
</tr>
{% endfor %}
解决方案
如果大写/小写字母和你说的一样,就这样做吧,我只是测试了一下。
视图.py
from .models import tableA
def nani(request):
data = tableA.objects.all()
return render(request, 'site/home.html', {'data': data})
在您的网站/home.html中:
{% for test in data %}
{{ test.published }}
{{ test.publisher }}
{{ test.tableb.url }}
{% endfor %}
你的str方法也有问题。datetime 不是字符串格式。所以在你的models.py中,你必须像这样修复这一行:
def __str__(self):
return str(self.created)
推荐阅读
- node.js - DynamoDB.putItem 函数不使用 sls 命令保存项目
- mysql - JOIN 查询上的 SQL Count 需要永远执行?
- ruby - 如何删除3个或更多相同的字符
- selenium - 用 Chrome 执行 selenium 后出错
- sql - 带有 Like 和 '%' 的 Oracle DB 查询时间戳
- java - Java 泛型 - 嵌套 foreach 循环,去除代码重复
- c# - 与 .NET 相比,OpenSSL HMACSHA256 产生不同的结果
- ios - UInt8 从 Swift 到 Objective C
- java - 如何组织以下简单的 Java 代码?
- ios - 带有UITabBarController的searchBarController的导航栏在更改导航栏的颜色时闪烁