django - 无法从 views.py 访问我的模型数据库
问题描述
我正在学习 Django 2.2,我正在尝试从名为 sKills 的模型基于名为 Profile 的父模型:
但我有这个错误:
DoesNotExist at /skills/
Profile matching query does not exist.
Request Method: GET
Request URL: http://127.0.0.1:8080/skills/
Django Version: 2.2
Exception Type: DoesNotExist
Exception Value:
Profile matching query does not exist.
在技能 => models.py 中:
from django.db import models
from profiles.models import Profile
from django.core.validators import MaxValueValidator, MinValueValidator
# Create your models here.
class Skill(models.Model):
user = models.ForeignKey(Profile, on_delete=models.CASCADE)
name = models.CharField(max_length=220)
score = models.PositiveIntegerField(
validators=[MinValueValidator(1), MaxValueValidator(5)])
def __str__(self):
return "{}-{}-{}".format(self.user, self.name, self.score)
在技能 => Views.py 中:
# Create your views here.
def skill_view(request):
user_id = request.user.id
profile = Profile.objects.get(pk=user_id)
#profile = get_object_or_404(Profile, pk=user_id)
SkillFormset = inlineformset_factory(Profile, Skill,fields='__all__',extra=1)
formset = SkillFormset( instance=profile)
context = {
'formset': formset
}
return render(request,'skills/add.html',context)
在技能 => urls.py 中:
app_name = 'skills'
urlpatterns = [
path('', skill_view, name='my-skills'),
]
在技能 => 模板 => 技能 => add.html 中:
{% extends 'base.html' %}
{% block title %}my skills{% endblock title %}
{% block content %}
<form action="" method="POST">
{{formset}}
</form>
{% endblock content %}
在配置文件 => 模型中:
from django.db import models
from django.contrib.auth.models import User
from django.core.validators import FileExtensionValidator
# Create your models here.
class Profile(models.Model):
name = models.ForeignKey(User, on_delete=models.CASCADE)
website = models.URLField(blank=True)
avatar = models.ImageField(upload_to='uploads/img', validators=[FileExtensionValidator(allowed_extensions=['png'])], blank=True)
updated = models.DateTimeField(auto_now=True)
created = models.DateTimeField(auto_now_add=True)
@property
def get_created(self):
return self.created.strftime("%m/%d/%Y, %H:%M:%S")
def __str__(self):
return "{}-{}".format(self.name, self.get_created)
我在数据库中有个人资料用户我不明白:
谢谢你的帮助
解决方案
当您针对用户 id查找pk时, 这是不正确的,因为您没有将name字段设置为primary_key=True或从User模型本身继承。您必须查找个人资料的名称字段
profile = Profile.objects.get(name_id=user_id)
您可以将名称设置为主键,如下所示:
name = models.ForeignKey(User, on_delete=models.CASCADE, primary_key=True)
然后你可以在pk上查找:
profile = Profile.objects.get(pk=user_id)
推荐阅读
- cuda - 将数据从寄存器复制到全局内存
- ios - UIButton 的大小不会改变 - Swift
- python - google api:如何将文件附加到电子邮件,形成驱动器?
- git - 强制 git 在属性更新后提交更改
- asp.net-mvc - ASP.NET MVC 中的数据表自动刷新
- yii2 - Yii2:如何删除 Yii2 上的关系 3 表
- java - 如何用java以外的语言编写一个android应用程序
- javascript - 将使用 jsPDF 生成的 PDF 发送到服务器
- python - 为什么 Python " ".split() 和 " ".split(" ") 会产生不同的结果?
- spring - 服务无法在实体类中自动连接