更正 Django 用户模型外键问题

凯特·戈弗雷

我正在使用内置的 django 用户模型。我不断收到错误django.db.utils.IntegrityError: FOREIGN KEY constraint failed

我没有在任何其他模型中使用用户模型,反之亦然。

models.py 看起来像这样

from django.contrib.auth.models import User
from django.utils import timezone
from django.db.models import CharField
from django.db.models import BooleanField
from django.db.models import TextField
from django.db.models import DateTimeField

class Course(models.Model): 
    id = models.AutoField(primary_key=True)
    name = CharField(max_length=100)

class Project(models.Model):
    id = models.AutoField(primary_key=True)
    desc = CharField(max_length=150)
    name = CharField(max_length=50)
    storyboard_file_path = TextField()
    storyboard_completed = BooleanField(default=False)
    filming_complete = BooleanField(default=False)
    audio_complete = BooleanField(default=False)
    production_complete = BooleanField(default=False)
    aggregation_complete = BooleanField(default=False)
    video_file_path = TextField()
    final_review_complete = BooleanField(default=False)
    course = models.ForeignKey(Course, on_delete=models.CASCADE, related_name="projects", null=True, blank=True)

class Status(models.Model):
    status_id = models.IntegerField(primary_key=True)
    desc = CharField(max_length=150)
    name = CharField(max_length=50)

class Event(models.Model):
    project_id = models.ForeignKey(Project, on_delete=models.CASCADE, null=True, blank=True)
    status_id = models.ForeignKey(Status, on_delete=models.CASCADE, null=True, blank=True)
    datetime = models.DateTimeField(auto_now_add=True, blank=True)

serializers.py 看起来像这样

from rest_framework import serializers
from .models import Event
from .models import Project
from .models import Course
from rest_framework_jwt.settings import api_settings


class UserSerializer(serializers.ModelSerializer):

    class Meta:
        model = User
        fields = ('id', 
        "password",
        "last_login",
        "is_superuser",
        "username",
        "first_name",
        "last_name",
        "email",
        "is_staff",
        "is_active",
        "date_joined",
        "groups",
        "user_permissions")

    def create(self, validated_data):
        password = validated_data.pop('password', None)
        instance = self.Meta.model(**validated_data)
        if password is not None:
            instance.set_password(password)
        instance.save()
        return instance

    def update(self, instance, validated_data):
        for attr, value in validated_data.items():
            if attr == 'password':
                instance.set_password(value)
            else:
                setattr(instance, attr, value)
        instance.save()
        return instance

    def get_jwt_token(user):
        jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
        jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER

        payload = jwt_payload_handler(user)
        return jwt_encode_handler(payload)

class ProjectSerializer(serializers.ModelSerializer):
    class Meta:
        model = Project
        fields = ('id', 'desc', 'name', 'storyboard_file_path', 
        'storyboard_completed', 'filming_complete', 'audio_complete',  
        'production_complete', 'aggregation_complete', 'video_file_path',
        'final_review_complete', 'course')

    def create(self, validated_data):
        instance = self.Meta.model(**validated_data)
        instance.save()
        return instance

    def update(self, instance, validated_data):
        for attr, value in validated_data.items():
                setattr(instance, attr, value)
        instance.save()
        return instance

class CouserSerializer(serializers.ModelSerializer):
    projects = ProjectSerializer(many=True, read_only=True)

    class Meta:
        model = Course
        fields = ('id', 'name', 'projects')

    def create(self, validated_data):
        instance = self.Meta.model(**validated_data)
        instance.save()
        return instance

我正在尝试加载夹具

{
    "model": "auth.user",
    "pk": 1,
    "fields": {
        "password": "pbkdf2_sha256$120000$V2isoXl1Q88l$sVuB+25I6UNNLY76Ti0EixAu/Ucimqi7rFpbadDzqzc=",
        "last_login": null,
        "is_superuser": true,
        "username": "[email protected]",
        "first_name": "Admin",
        "last_name": "User",
        "email": "[email protected]",
        "is_staff": true,
        "is_active": true,
        "date_joined": "2019-04-16T00:16:13.252Z",
        "groups": [1],
        "user_permissions": []
    }
},
{
    "model": "auth.user",
    "pk": 2,
    "fields": {
        "password": "pbkdf2_sha256$120000$6YHv5JMayFnN$+Y2TqedyjZq02kEw/0ZaXtyigzaH2+BRUIqqkSeAG90=",
        "last_login": null,
        "is_superuser": false,
        "username": "[email protected]",
        "first_name": "Content",
        "last_name": "Manager",
        "email": "[email protected]",
        "is_staff": true,
        "is_active": true,
        "date_joined": "2019-04-16T00:19:01.130Z",
        "groups": [2],
        "user_permissions": []
    }
}
]

我不明白这个外键错误是从哪里来的。任何帮助,将不胜感激。

马克·贝利

应该是群吧。这些组是否存在(在用户之前)。如果不是,你会得到这个错误。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

django外键(用户)在模型中

来自分类Dev

django用户模型公司的外键

来自分类Dev

django用户模型公司的外键

来自分类Dev

使用自定义用户模型时,Django管理员中的“请更正以下错误”

来自分类Dev

Django:使用当前用户作为项目模型的外键

来自分类Dev

使用外键进行Django模型查询并登录用户

来自分类Dev

django上传到带有外键的图像模型给用户

来自分类Dev

如何使当前用户成为 Django 模型中的外键

来自分类Dev

Django - 使用外键模型时遇到问题

来自分类Dev

如何更正我的ORM语句以显示未与Django中的用户关联的所有朋友?

来自分类Dev

Django模型,循环外键

来自分类Dev

Django多重外键模型

来自分类Dev

更正“ While”循环中的问题

来自分类Dev

Django:模型中用户的两个外键,得到不是加载页面的用户的外键

来自分类Dev

Django REST外键问题

来自分类Dev

Django 外键分配问题

来自分类Dev

在用户模型django上使用外键存储用户的名字

来自分类Dev

由于未提供用户ID(外键),因此尝试更新单个Django表单/模型字段失败

来自分类Dev

Django迁移命令失败,并带有用户模型的外键

来自分类Dev

Django:如何将用户添加为模型中的外键

来自分类Dev

每个外键的Django模型单个实例

来自分类Dev

Django模型中的外键数组

来自分类Dev

Django模型:使用外键中的字段

来自分类Dev

Django从模型CharField引入外键

来自分类Dev

Django模型:外键的唯一值

来自分类Dev

Django模型外键获取属性

来自分类Dev

Django模型外键中的属性错误

来自分类Dev

Django模型中的自动外键

来自分类Dev

Django模型中的外键数组

Related 相关文章

热门标签

归档