【问题标题】:Django How to add a User Foreignkey inside a User model?Django 如何在用户模型中添加用户外键?
【发布时间】:2022-01-13 00:29:07
【问题描述】:

我正在尝试在用户模型中插入用户的外键,但我不断收到错误消息。 作为用户,我想有两个目的,我可以做一本书来照顾我的宠物,也可以照顾其他宠物

class User(AbstractBaseUser, PermissionsMixin):
  name = models.CharField(max_length=255, default='John Doe')
  pet_sitter = models.ForeignKey('User',on_delete=models.CASCADE)//--->User inside User
  I tried get_user_model() it showed errors too//
  pet_appointments= models.ManyToManyField(
    'User',
    through=Booking,
    through_fields=('patient', 'doctor')
    )

class Booking(models.Model):
  start_date = models.DateTimeField()  
  end_date = models.DateTimeField()
  owner_of_pet = models.ForeignKey(get_user_model(),related_name = "User",on_delete=models.CASCADE, blank=True,null=True)
  sitter = models.ForeignKey('User', on_delete=models.CASCADE)

    

enter code here
===============

error
django.core.exceptions.ImproperlyConfigured: AUTH_USER_MODEL refers to model 'api.User' that has not been installed

【问题讨论】:

  • 您不能将相同的模型作为与自身的关系,这是没有意义的。您可以创建一个单独的模型 Pet 并在那里添加关系。
  • 作为用户,我想成为一名保姆,同时我希望能够将我的宠物送给其他用户

标签: python django django-models foreign-keys many-to-many


【解决方案1】:
  1. 好像您在api 应用中定义了一些User,所以将该应用添加到settings.py 中已安装的应用中:
# settings.py
INSTALLED_APPS = [
    ...
    "api",

此外,以这种方式引用User 是不可能或不需要的。

我想你的models.py 是这样的:

from api.models import CustomUser
from django.db import models


class Pet(models.Model):
    name = models.CharField(max_length=100)
    pet_sitter = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
    owner = models.ForeignKey(CustomUser, on_delete=models.CASCADE, related_name='pets', blank=True,null=True)

class Booking(models.Model):
    pet = models.ForeignKey(Pet, on_delete=models.CASCADE)
    start_date = models.DateTimeField()  
    end_date = models.DateTimeField()

在此处查看源代码:https://github.com/almazkun/petshop

【讨论】:

    猜你喜欢
    • 2018-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 2019-06-26
    • 1970-01-01
    • 2012-06-22
    相关资源
    最近更新 更多