当前位置: 首页 > 知识库问答 >
问题:

表“skills”的外键链接字段“author”在数据库中始终为空

萧宁
2023-03-14

我正在构建一个web应用程序,学生可以看到导师发布的工作岗位。导师可以登录网站发布工作。我创建了一个“我的帖子”页面,让导师看到他们所有的帖子,编辑,删除他们。似乎一个外键字段“author”在发布一个作业后,在数据库中是空的,这使得该帖子不显示在我的帖子中。请帮帮忙。

下面是我的models.py技能:

class Skill(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    teacher_name = models.CharField(max_length=50)
    skill_type = models.CharField(
        max_length=30,
        choices=SKILL_CHOICES,
    )
    name = models.CharField(max_length=65)
    duration = models.IntegerField()
    cost = models.IntegerField()
    location = models.CharField(max_length=65)

    def __str__(self):
        return str(self.skill_type + " " + self.name)

这是我的urls.py

urlpatterns = [
    path('', views.index, name='index'),
    path('home', views.index, name='home'),
    path('signup', views.signup, name='signup'),
    path('postskill', views.postskill, name='postskill'),
    path('profile', views.profile, name='profile'),
    path('post/<int:id>', views.post, name='post'),
]

postskill和post的views.py(postskill是一个模型

@login_required
def postskill(request):
    if request.method == 'POST':
        print(request.user.id)
        print(request.user.username)
        form = PostRecord(request.POST)
        if form.is_valid():
            data = form.cleaned_data
            s = Skill(
                # author = request.user.id,
                teacher_name = request.user.username,
                skill_type = data.get('skill_type'),
                name = data.get('name'),
                duration = data.get('duration'),
                cost = data.get('cost'),
                location = data.get('location'),
            )
            s.save()

        allskills = Skill.objects.all().order_by('name')
        return render(request, 'home.html', {'skills': allskills})
    else:
        form = PostRecord()
        return render(request, 'postskill.html', {'form': form})

def post(request,id):
    logged_in_user_posts = Skill.objects.filter(author=id)
    return render(request, 'post.html', {'posts': logged_in_user_posts})

post.html模板:

{% extends "base_generic.html" %}
{% block content %}

{% for post in posts %}

    Username: {{ post.author.username }}
    <ul>
    <li>Subject Type: {{post.skill_type}}</li>
    <li>Subject Name: {{post.name}}</li>
    <li>Duration: {{post.duration}} months</li>
    <li>Cost: Rs. {{post.cost}}</li>
    <li>Location: {{post.location}}</li>
    </ul>
    <br>

{% endfor %}


{% endblock %}

共有1个答案

颜志业
2023-03-14

尝试取消对行得注释:

#author=request.user.id

并使之:

author=request.user

你说:“是的。则会抛出CSRF丢失错误“

你必须登录请求一个用户的id是为什么。

 类似资料:
  • 我有4个实体列在下面的职位。客户端和产品已在数据库中。问题在于订单和订单产品。我创建Orders对象,然后添加客户机(已经在数据库中)和OrdersProducts的ArrayList,但出现了错误: 当我不添加客户机时,数据库中只有OrderProducts的ArrayList,但OrderProducts没有外键。怎么了?我使用Mysql服务器和hibernate。

  • 问题内容: 我尝试@Inject这样的字段(它是一个jar模块,在META-INF下存在空bean.xml): IDataProvider接口 数据提供者实现import javax.enterprise.context.ApplicationScoped; 我尝试注入DataProvider的类 如果我在Wildfly上运行此命令,则注入的dataProvider始终为null(DataCont

  • 我对Laravel和数据库都是新手。我正在写一个学生评估的网络应用程序。我有一个现有的MySQL数据库,它已经包含了我所需要的一切;但是,我正在使用Laravel的auth user表,并尝试添加一个外键,该外键引用MySQL数据库中的教师表。我一直得到以下错误。。。 在Connection.php第664行: SQLSTATE[HY000]:一般错误:1215不能添加外键约束(SQL:改变表添加

  • 问题内容: 我有一个需要支持多语言界面的应用程序,确切地说是五种语言。对于接口的主要部分,可以使用标准的Res​​ourceBundle方法来处理。 但是,数据库包含许多表,这些表的元素包含人类可读的名称,描述,摘要等。必须有可能以所有五种语言输入每一个。 虽然我想我可以简单地在每个表上都有字段 我认为在编写代表每个表的bean时,这会导致大量的很大程度上相同的代码。 从纯粹面向对象的角度来看,解

  • 问题内容: 我有两个非常简单的对象,并且一个对象应在一组“一对多”关系中包含另一个对象。对象已正确插入数据库中,但“子项”表中的外键始终为“ null”。 我不知道为什么: 这是测试对象,它将子对象保持在其集合中: 这是子对象,它包含指向“ TestObj”的反向链接: 我使用以下代码来持久化此对象: 有人可以解释一下为什么会这样吗? 问题答案: 这很简单:您永远不会初始化中的字段(应将其命名为C

  • 问题内容: 我有3个数据库。1链接到2,2链接到3。我想从1查询3中的表。我尝试了third_db_tab @ 3 @ 2,但它不起作用。想知道这是否可能,如果可能,语法是什么。 问题答案: 我认为您可以通过创建同义词来做到这一点。在数据库2中创建一个同义词: 然后在数据库1中创建第二个同义词: 这未经测试(我现在没有运行三个数据库),但是我认为Oracle足够聪明,可以解开同义词。