gpt4 book ai didi

mysql - Django 模型访问

转载 作者:行者123 更新时间:2023-11-30 23:12:34 25 4
gpt4 key购买 nike

我正在使用 MySQL 数据库制作 Django 应用程序。我在查看特定表格的详细 View 时遇到问题。我有一个表 EMAILS,其中包含 USERNAME 列,它是 EMAILS 的主键,也是第二个表 PLAYERS 的外键和主键。

CREATE TABLE Emails(
Username varchar(30) PRIMARY KEY,
Email varchar (30) UNIQUE NOT NULL,
Pass_field varchar (15),
Registered date,
User_Type varchar (15) NOT NULL
);

CREATE TABLE Players(
Real_Name varchar (30),
Handle varchar (30) NOT NULL,
Username varchar (30) PRIMARY KEY,
Birth date,
Nationality varchar (5),
foreign key(Username) references Emails(Username)
);


class Emails(models.Model):
email = models.CharField(max_length=30L, db_column='Email')
username = models.CharField(max_length=30L, primary_key=True, db_column='Username')
pass_field = models.CharField(max_length=15L, db_column='Pass_Field', blank=True)
registered = models.DateField(null=True, db_column='Registered', blank=True)
user_type = models.CharField(max_length=15L, db_column='User_Type')

def __unicode__(self):
return self.username

class Meta:
db_table = 'emails'

class Players(models.Model):
real_name = models.CharField(max_length=30L, db_column='Real_Name', blank=True)
handle = models.CharField(max_length=30L, db_column='Handle')
username = models.ForeignKey(Emails, primary_key=True, db_column='Username')
birth = models.DateField(null=True, db_column='Birth', blank=True)
nationality = models.CharField(max_length=5L, db_column='Nationality', blank=True)

def __unicode__(self):
return self.username

class Meta:
db_table = 'players'

那些是 MySQL 和 Django 模型,我认为它们是正确的并且彼此对齐。

在显示表格 ListView 的页面中,我在每一行中都有一个链接指向该对象的详细 View 。我使用这样的 URL 模式来执行此操作

url(r"^player/(?P<pk>\w+)/$", views.PlayerView.as_view(), name='player'),

PlayerView 是这样定义的:

class PlayerView(generic.DetailView):
model = Players
template_name = 'dotapp/player.html'

链接看起来像这样:

/player/{{ player.username.username }}"  *HTML omitted

此方法适用于我的应用程序中具有自己的(非外部)主键的其他表,但是对于 PLAYER,它返回我的模板但没有信息。对我来说,这表明检索到一个对象,但由于某种原因未显示相关数据。最后,我的模板如下所示:

{% extends 'dotapp/base.html' %}
{% block content %}
<h1>Player: {{ player }}</h1>
<p>
<strong>Name:</strong> {{ player.real_name }}
</p>
<p>
<strong>Handle:</strong> {{ player.handle }}
</p>
<p>
<strong>Email:</strong> {{ player.username.email }}
</p>
<p>
<strong>Birth:</strong> {{ player.birth }}
</p>
<p>
<strong>Nationality:</strong> {{ player.nationality }}
</p>

{% endblock %}

我可以使用 python shell 查看丢失的数据,但我不知道为什么它不会显示在我的 PLAYER 模板上。谁能帮忙?

最佳答案

传递到模板中的对象的默认名称将是 object,因此要么在模板中更改对 player 的引用,要么添加 context_object_name到你的基于类的 View :

class PlayerView(generic.DetailView):
model = Players
template_name = 'dotapp/player.html'
context_object_name = 'player'

关于mysql - Django 模型访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19246178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com