小编Dan*_*Dan的帖子

用户作为 Django 中的外键

我的models.py文件中有以下内容:

class Film(models.Model):
    title = models.CharField(max_length=200)
    director = models.CharField(max_length=200)
    description = models.CharField(max_length=200)
    pub_date = models.DateField('date published')

class Comment(models.Model):
    film = models.ForeignKey(Film, on_delete=models.CASCADE)
    body = models.CharField(max_length=200)
Run Code Online (Sandbox Code Playgroud)

当我登录到 Django admin 时,我添加了一些电影,然后添加了一些评论,选择评论与哪个电影对象相关。然后我也通过管理面板创建了几个用户。

我希望我的关系是:

电影可以有很多评论/评论属于电影

用户可以有很多评论/评论属于用户

我认为,就像评论和电影一样,我只需user要将comment. 我正在努力做到这一点。我正在学习Django 教程,但看不到介绍如何将其他表链接到用户的教程。

我以为我可以做这样的事情:

user = models.ForeignKey(User, on_delete=models.CASCADE)
Run Code Online (Sandbox Code Playgroud)

像这样导入用户时:

from django.contrib.auth.models import User
Run Code Online (Sandbox Code Playgroud)

目前的结果是如果我保持user = models.ForeignKey(User, on_delete=models.CASCADE)我得到 err_connection_refused

python django

3
推荐指数
1
解决办法
5301
查看次数

在 Django 中使用 CreateView 传递数据

我收到错误:

NOT NULL 约束失败:film_comment.film_id

在评论页面上有一个名为 body 的表单字段,用于评论本身,我还需要它来存储针对用户和电影的评论。

楷模:

from django.db import models
from django.urls import reverse

class Film(models.Model):
    title = models.CharField(max_length=200)
    director = models.CharField(max_length=200)
    description = models.CharField(max_length=200)
    pub_date = models.DateField('date published')

    def get_absolute_url(self):
        return reverse('films:detail', kwargs={'pk' : self.pk})

class Comment(models.Model):
# user = models.ForeignKey(User, on_delete=models.CASCADE)
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    film = models.ForeignKey(Film, on_delete=models.CASCADE)
    body = models.CharField(max_length=200)
Run Code Online (Sandbox Code Playgroud)

意见:

from django.views import generic
from .models import Film, Comment
from django.views.generic.edit import CreateView, UpdateView, DeleteView

class IndexView(generic.ListView):
    # model = Film
    template_name = …
Run Code Online (Sandbox Code Playgroud)

python django

0
推荐指数
1
解决办法
1469
查看次数

标签 统计

django ×2

python ×2