RelatedObjectDoesNotExist at / admin / login /

问题描述 投票:0回答:1

Django初学者。该项目是一个非常基本的食品交付应用程序。

我已使用指定的here使用一对一链接扩展了用户模型,以便在新用户尝试注册时包括“城市”字段。

问题是,当我在python shell中创建超级用户并尝试从以下帐户访问该帐户时http://127.0.0.1:8000/admin/login/?next=/admin/并单击登录,返回以下页面:

enter image description here

据我所知,这是由于每个用户/超级用户都必须链接到一个Customer对象。

如何避免这种情况?解决方案是通过指定不需要字段“ city”来覆盖超级用户类吗?如果是,我该怎么做?如果没有,在这种情况下的最佳做法是什么?

这里是accounts / model.py

from django.db import models
from django.contrib.auth.models import User
from city.models import City
from django.db.models.signals import post_save
from django.dispatch import receiver


# Create your models here.
class Customer(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    city = models.ForeignKey(City, on_delete=models.CASCADE)


@receiver(post_save, sender=User)
def create_customer_user(sender, instance, created, **kwargs):
    if created:
        Customer.objects.create(user=instance)


@receiver(post_save, sender=User)
def save_customer_user(sender, instance, **kwargs):
    instance.customer.save()

如果您需要上传其他任何代码,请告诉我,因为我能想到的唯一涉及的代码就是我发布的代码。

提前感谢

django account
1个回答
0
投票

正如您提到的,您的UersCustomer模型之间具有这里的问题是您的User模型没有与之关联的Customer对象。

您有两个选择:

1)输入shell并创建一个Customer对象并填写关系。

2)使您的相关字段为空;在blank=True字段上设置null=Trueuser

© www.soinside.com 2019 - 2024. All rights reserved.