Django模型中的ManyToMany关系

2024-04-24 09:59:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在三个表之间添加具有manytomy关系的关系。我正在学习python和Django框架的新特性。对于需求,用户可以添加项目,也可以为其他用户添加查看权限。 这意味着一个用户可以有多个项目,一个项目也可以有多个用户。 用户模型是django的默认用户模型。在

模型和项目是:

项目/模型.py在

from django.db import models
from django.contrib.auth.models import User
# Create your models here.


class Projects(models.Model):
    project_title = models.CharField(max_length=255)
    description = models.TextField(blank=True)
    privacy = models.SmallIntegerField(default=1) # 1 for public, 2 for private
    status = models.SmallIntegerField(default=1) #1 for active, 2 for deactive, 3 for delete, 4 for depricated
    created_at = models.DateTimeField('date published', blank=True, default=False)
    users = models.ManyToManyField(User, through="UserProjects")

class UserProjects(models.Model):
    user = models.ForeignKey(User,blank=True, default=False)
    project = models.ForeignKey(Projects,blank=True)
    owner = models.SmallIntegerField(default=1)

它不起作用。 当我添加一个项目是产生一些错误。。在

^{pr2}$

这里是projects/view.py

def add(request):
    form = ProjectForm()
    if request.method == "POST":
        form = ProjectForm(request.POST)
        if form.is_valid():
            p = Projects(project_title=request.POST.get("project_title"), description=request.POST.get("description"),
                         status=1, privacy=1)
            p.save()
            sp = UserProjects(user_id=request.user.id, project_id=p.id)
            sp.save()
            p.users.add(sp)
            messages.success(request, 'Profile details updated.')

    view_data = {
        "form": form,
        'title': "Add new project"
    }
    return render(request, 'projects/add.html', view_data)

我不知道,怎么了。请引导我。谢谢


Tags: 项目django用户模型formprojectidtrue
1条回答
网友
1楼 · 发布于 2024-04-24 09:59:56

来自Django docs

class DateTimeField(**kwargs)

Default widget: DateTimeInput

Empty value: None

Normalizes to: A Python datetime.datetime object.

Validates that the given value is either a datetime.datetime, datetime.date or string formatted in a particular datetime format.

Error message keys: required, invalid

您可以看到DateTimeField验证给定的值是日期时间。日期时间, 日期时间.日期或以特定日期时间格式格式化的字符串,但是您在模型定义中设置了default=False。所以我想问题就在这里。在

相关问题 更多 >