无法从views.py访问我的模型数据库

时间:2020-03-25 09:21:13

标签: django python-3.x django-models

我正在学习Django 2.2,我正在尝试基于名为Profile的父模型从名为sKills的模型:

但是我有这个错误:

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)

in 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)

技能=> 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)

我不了解数据库中的个人资料用户:

enter image description here

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

您正在针对用户ID pk 上查找,因为您没有将 name 字段设置为< strong> 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)