ValueError: Невозможно присвоить значение "1": "User.jsgGroupName" должен быть экземпляром "JsgGroup".
Я получаю ValueError: Невозможно присвоить значение "1": "User.jsgGroupName" должен быть экземпляром "JsgGroup". эта ошибка при использовании внешнего ключа в пользовательской модели пользователя. Я предполагаю, что есть какая-то проблема с внешним ключом.
Нет подходящего решения для приложения на основе django rest framework, и я использую drf.
models.py
from django.db import models
from django.contrib.auth.models import User, AbstractBaseUser, PermissionsMixin, BaseUserManager
from django.utils.translation import gettext_lazy as _
from django.utils import timezone
class Region(models.Model):
RegionName = models.CharField(max_length=20)
numGroups = models.IntegerField(default=0)
def __str__(self):
return self.RegionName
class Group(models.Model):
GroupName = models.CharField(max_length=20)
id = models.IntegerField(primary_key=True, editable=True)
Region = models.ForeignKey(
Region, on_delete=models.CASCADE, related_name="groups", null=True, blank=True)
def __str__(self):
return self.GroupName
class User(AbstractBaseUser, PermissionsMixin):
id = models.AutoField(primary_key=True, editable=False)
username = models.CharField(
max_length=20, null=True, blank=True, unique=True)
email = models.EmailField(_('email address'), unique=True)
GroupName = models.ForeignKey(
Group, on_delete=models.CASCADE, related_name="groupUser", null=True, blank=True)
RegionName = models.ForeignKey(
Region, on_delete=models.CASCADE, related_name="regionUser", null=True, blank=True)
is_staff = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
date_joined = models.DateTimeField(
auto_now_add=True, null=True, blank=True)
objects = CustomUserManager()
USERNAME_FIELD = 'username'
REQUIRED_FIELDS = ['email', 'GroupName','RegionName', ]
def __str__(self):
return self.username
Чтобы присвоить ForeignKey
s, вам нужен сериализатор, способный к отношениям:
https://www.django-rest-framework.org/api-guide/relations/