Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 不能accè;s从views.py访问我的模型数据库_Django_Python 3.x_Django Models - Fatal编程技术网

Django 不能accè;s从views.py访问我的模型数据库

Django 不能accè;s从views.py访问我的模型数据库,django,python-3.x,django-models,Django,Python 3.x,Django Models,我正在学习Django 2.2,我正在尝试根据名为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 Valu

我正在学习Django 2.2,我正在尝试根据名为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.
在Skills=>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)
在Skills=>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)
在Skills=>url.py中:

app_name = 'skills'

urlpatterns = [
    path('', skill_view, name='my-skills'),
    ]
在Skills=>templates=>Skills=>add.html中:

{% extends 'base.html' %}

{% block title %}my skills{% endblock title %}

{% block content %}

<form action="" method="POST">
{{formset}}
</form>
{% endblock content %}
我不了解数据库中的用户配置文件:


感谢您的帮助

,因为您正在根据用户id查找主键,该id不正确,因为您没有将名称字段设置为主键=True或继承自用户模型本身。您必须查找配置文件的名称字段

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)

你能分享这个档案模型吗?最有可能的是用户ID的档案实际上并不存在。不太可能使用annonimous user点击视图。@danish_wani我已更新代码您正在使用外键将配置文件链接到用户。这意味着用户可以有多个配置文件,这将导致
profile.objects.get(…)
失败。你可以用一个新的。如果您这样做,并且总是在创建用户时创建配置文件,那么您可以执行
request.user.profile
来获取登录用户的配置文件。感谢如何将名称字段设置为primary\u key=Truename=models.ForeignKey(user,on\u delete=models.CASCADE,primary\u key=True)以了解更多详细信息,请访问
profile = Profile.objects.get(pk=user_id)